Browse Source

1.优化数据发送逻辑;
2.添加蓝牙状态监听逻辑;
3.修改项目包名和工程ID。

Yumin 6 years ago
parent
commit
10da28921d

+ 1 - 1
app/build.gradle

@@ -3,7 +3,7 @@ apply plugin: 'com.android.application'
 android {
     compileSdkVersion 28
     defaultConfig {
-        applicationId "cn.minbb.producttester"
+        applicationId "cn.minbb.tester"
         minSdkVersion 18
         targetSdkVersion 28
         versionCode 1

+ 1 - 1
app/src/androidTest/java/cn/minbb/producttester/ExampleInstrumentedTest.java → app/src/androidTest/java/cn/minbb/tester/ExampleInstrumentedTest.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester;
+package cn.minbb.tester;
 
 import android.content.Context;
 import android.support.test.InstrumentationRegistry;

+ 7 - 7
app/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="cn.minbb.producttester">
+    package="cn.minbb.tester">
     <!-- 使用蓝牙设备 -->
     <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 管理蓝牙设备 -->
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 如果 Android6.0 蓝牙搜索不到设备,需要补充下面两个权限 -->
@@ -10,7 +10,7 @@
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
 
     <application
-        android:name=".ctrl.App"
+        android:name="cn.minbb.tester.ctrl.App"
         android:allowBackup="false"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -18,9 +18,9 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning">
-        <activity android:name=".views.BasicDeviceActivity"></activity>
+        <activity android:name="cn.minbb.tester.activities.BasicDeviceActivity"></activity>
         <activity
-            android:name=".views.StartActivity"
+            android:name="cn.minbb.tester.activities.StartActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:theme="@style/FullscreenTheme">
             <intent-filter>
@@ -30,14 +30,14 @@
             </intent-filter>
         </activity>
         <activity
-            android:name=".views.MainActivity"
+            android:name="cn.minbb.tester.activities.MainActivity"
             android:label="@string/app_name" />
         <activity
-            android:name=".views.ScanDeviceActivity"
+            android:name="cn.minbb.tester.activities.ScanDeviceActivity"
             android:label="设备连接" />
 
         <receiver
-            android:name=".receiver.BluetoothStatusReceiver"
+            android:name="cn.minbb.tester.receiver.BluetoothStatusReceiver"
             android:enabled="false"
             android:exported="true">
             <intent-filter>

+ 101 - 29
app/src/main/java/cn/minbb/producttester/views/BasicDeviceActivity.java → app/src/main/java/cn/minbb/tester/activities/BasicDeviceActivity.java

@@ -1,13 +1,17 @@
-package cn.minbb.producttester.views;
+package cn.minbb.tester.activities;
 
 import android.annotation.SuppressLint;
 import android.app.ProgressDialog;
 import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.support.design.widget.FloatingActionButton;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.app.AppCompatDelegate;
@@ -15,6 +19,7 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
 import android.widget.Toast;
 
@@ -30,18 +35,28 @@ import java.util.regex.Pattern;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
-import cn.minbb.producttester.R;
-import cn.minbb.producttester.adapter.BasicDeviceAdapter;
-import cn.minbb.producttester.ctrl.App;
-import cn.minbb.producttester.ctrl.BluetoothChatService;
-import cn.minbb.producttester.utils.DataTranslation;
+import cn.minbb.tester.R;
+import cn.minbb.tester.adapter.BasicDeviceAdapter;
+import cn.minbb.tester.ctrl.App;
+import cn.minbb.tester.ctrl.BluetoothChatService;
+import cn.minbb.tester.utils.DataTranslation;
 
-public class BasicDeviceActivity extends AppCompatActivity {
+public class BasicDeviceActivity extends AppCompatActivity implements View.OnTouchListener {
 
     @BindView(R.id.noDevice)
     IconTextView noDevice;
     @BindView(R.id.content)
     RecyclerView contentRecyclerView;
+    @BindView(R.id.opUp)
+    FloatingActionButton opUp;
+    @BindView(R.id.opLeft)
+    FloatingActionButton opLeft;
+    @BindView(R.id.opCenter)
+    FloatingActionButton opCenter;
+    @BindView(R.id.opRight)
+    FloatingActionButton opRight;
+    @BindView(R.id.opDown)
+    FloatingActionButton opDown;
 
     private ProgressDialog dialog;
 
@@ -57,12 +72,22 @@ public class BasicDeviceActivity extends AppCompatActivity {
         AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_basic_device);
         ButterKnife.bind(this);
 
+        // 设置广播信息过滤
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
+        intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
+        intentFilter.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
+        intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+        // 注册广播接收器,接收并处理搜索结果
+        this.registerReceiver(receiver, intentFilter);
+
         App.setupActionBar(this);
         noDevice.setVisibility(View.VISIBLE);
 
@@ -72,6 +97,11 @@ public class BasicDeviceActivity extends AppCompatActivity {
         linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
         linearLayoutManager.setReverseLayout(false);
         contentRecyclerView.setLayoutManager(linearLayoutManager);
+        opUp.setOnTouchListener(this);
+        opLeft.setOnTouchListener(this);
+        opCenter.setOnTouchListener(this);
+        opRight.setOnTouchListener(this);
+        opDown.setOnTouchListener(this);
     }
 
     @Override
@@ -161,33 +191,72 @@ public class BasicDeviceActivity extends AppCompatActivity {
         }
     }
 
-    @OnClick({R.id.noDevice, R.id.opUp, R.id.opLeft, R.id.opCenter, R.id.opRight, R.id.opDown})
+    @OnClick({R.id.noDevice})
     public void onViewClicked(View view) {
         switch (view.getId()) {
             case R.id.noDevice:
                 startActivityForResult(new Intent(BasicDeviceActivity.this, ScanDeviceActivity.class), 0);
                 break;
+            default:
+        }
+    }
+
+    @Override
+    public boolean onTouch(View view, MotionEvent motionEvent) {
+        switch (view.getId()) {
             case R.id.opUp:
-                sendDataToDevice("UD\r\n", false);
-                sendDataToDevice("UU\r\n", false);
+                switch (motionEvent.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        sendDataToDevice("UD\r\n", false);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        sendDataToDevice("UU\r\n", false);
+                        break;
+                }
                 break;
             case R.id.opLeft:
-                sendDataToDevice("LD\r\n", false);
-                sendDataToDevice("LU\r\n", false);
+                switch (motionEvent.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        sendDataToDevice("LD\r\n", false);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        sendDataToDevice("LU\r\n", false);
+                        break;
+                }
                 break;
             case R.id.opCenter:
-                sendDataToDevice("SD\r\n", false);
-                sendDataToDevice("SU\r\n", false);
+                switch (motionEvent.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        sendDataToDevice("SD\r\n", false);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        sendDataToDevice("SU\r\n", false);
+                        break;
+                }
                 break;
             case R.id.opRight:
-                sendDataToDevice("RD\r\n", false);
-                sendDataToDevice("RU\r\n", false);
+                switch (motionEvent.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        sendDataToDevice("RD\r\n", false);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        sendDataToDevice("RU\r\n", false);
+                        break;
+                }
                 break;
             case R.id.opDown:
-                sendDataToDevice("DD\r\n", false);
-                sendDataToDevice("DU\r\n", false);
+                switch (motionEvent.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        sendDataToDevice("DD\r\n", false);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        sendDataToDevice("DU\r\n", false);
+                        break;
+                }
                 break;
+            default:
         }
+        return true;
     }
 
     private void showConnectDeviceProgress(boolean show) {
@@ -277,17 +346,6 @@ public class BasicDeviceActivity extends AppCompatActivity {
                             System.out.println("未匹配到数据");
                         }
                     }
-
-                    //检错误码计算函数
-//                    if (inhex == true) {
-//                        String readMessage = " " + Data_syn.bytesToHexString(readBuf, msg.arg1);
-//                        fmsg += readMessage;
-//                        mConversationView.append(readMessage);
-//                        // 接收计数,更显UI
-//                        countin += readMessage.length() / 2;
-//                        incount.setText("" + countin);
-//                    } else if (inhex == false) {
-//                    }
                     break;
                 case BluetoothChatService.MESSAGE_DEVICE_NAME:
                     String connectedDeviceName = msg.getData().getString(BluetoothChatService.DEVICE_NAME);
@@ -300,4 +358,18 @@ public class BasicDeviceActivity extends AppCompatActivity {
             }
         }
     };
+
+    private BroadcastReceiver receiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
+                new Handler().postDelayed(() -> runOnUiThread(() -> {
+                    if (!bluetoothAdapter.isEnabled()) {
+                        if (null != chatService) chatService.stop();
+                    }
+                }), 500);
+            }
+        }
+    };
 }

+ 5 - 5
app/src/main/java/cn/minbb/producttester/views/MainActivity.java → app/src/main/java/cn/minbb/tester/activities/MainActivity.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.views;
+package cn.minbb.tester.activities;
 
 import android.annotation.SuppressLint;
 import android.app.ProgressDialog;
@@ -34,10 +34,10 @@ import java.util.regex.Pattern;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
-import cn.minbb.producttester.R;
-import cn.minbb.producttester.adapter.MainPagerAdapter;
-import cn.minbb.producttester.adapter.WaterfallStaggeredAdapter;
-import cn.minbb.producttester.ctrl.BluetoothChatService;
+import cn.minbb.tester.R;
+import cn.minbb.tester.adapter.MainPagerAdapter;
+import cn.minbb.tester.adapter.WaterfallStaggeredAdapter;
+import cn.minbb.tester.ctrl.BluetoothChatService;
 
 public class MainActivity extends AppCompatActivity implements
         BottomNavigationView.OnNavigationItemSelectedListener,

+ 5 - 6
app/src/main/java/cn/minbb/producttester/views/ScanDeviceActivity.java → app/src/main/java/cn/minbb/tester/activities/ScanDeviceActivity.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.views;
+package cn.minbb.tester.activities;
 
 import android.annotation.SuppressLint;
 import android.app.ProgressDialog;
@@ -30,10 +30,10 @@ import java.util.Set;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import cn.minbb.producttester.R;
-import cn.minbb.producttester.adapter.DeviceListAdapter;
-import cn.minbb.producttester.ctrl.App;
-import cn.minbb.producttester.ctrl.BluetoothChatService;
+import cn.minbb.tester.R;
+import cn.minbb.tester.adapter.DeviceListAdapter;
+import cn.minbb.tester.ctrl.App;
+import cn.minbb.tester.ctrl.BluetoothChatService;
 
 public class ScanDeviceActivity extends AppCompatActivity {
 
@@ -431,7 +431,6 @@ public class ScanDeviceActivity extends AppCompatActivity {
             } else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
                 new Handler().postDelayed(() -> runOnUiThread(() -> {
                     if (!bluetoothAdapter.isEnabled()) {
-                        Toast.makeText(getApplicationContext(), "蓝牙已关闭", Toast.LENGTH_SHORT).show();
                         ScanDeviceActivity.this.finish();
                     } else {
                         deviceItemBeanList.clear();

+ 2 - 2
app/src/main/java/cn/minbb/producttester/views/StartActivity.java → app/src/main/java/cn/minbb/tester/activities/StartActivity.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.views;
+package cn.minbb.tester.activities;
 
 import android.annotation.SuppressLint;
 import android.os.Bundle;
@@ -14,7 +14,7 @@ import java.util.TimerTask;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import cn.minbb.producttester.R;
+import cn.minbb.tester.R;
 
 // 通过用户交互显示和隐藏系统UI(即状态栏和导航/系统栏)的示例全屏活动。
 public class StartActivity extends AppCompatActivity {

+ 2 - 2
app/src/main/java/cn/minbb/producttester/adapter/BasicDeviceAdapter.java → app/src/main/java/cn/minbb/tester/adapter/BasicDeviceAdapter.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.adapter;
+package cn.minbb.tester.adapter;
 
 import android.content.Context;
 import android.support.v7.widget.RecyclerView;
@@ -10,7 +10,7 @@ import java.util.List;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import cn.minbb.producttester.R;
+import cn.minbb.tester.R;
 
 public class BasicDeviceAdapter extends RecyclerView.Adapter<BasicDeviceAdapter.ViewHolder> {
 

+ 2 - 2
app/src/main/java/cn/minbb/producttester/adapter/DeviceListAdapter.java → app/src/main/java/cn/minbb/tester/adapter/DeviceListAdapter.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.adapter;
+package cn.minbb.tester.adapter;
 
 import android.bluetooth.BluetoothDevice;
 import android.content.Context;
@@ -14,7 +14,7 @@ import java.util.List;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import cn.minbb.producttester.R;
+import cn.minbb.tester.R;
 import lombok.Getter;
 import lombok.Setter;
 

+ 1 - 1
app/src/main/java/cn/minbb/producttester/adapter/MainPagerAdapter.java → app/src/main/java/cn/minbb/tester/adapter/MainPagerAdapter.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.adapter;
+package cn.minbb.tester.adapter;
 
 import android.support.annotation.NonNull;
 import android.support.v4.view.PagerAdapter;

+ 3 - 3
app/src/main/java/cn/minbb/producttester/adapter/WaterfallStaggeredAdapter.java → app/src/main/java/cn/minbb/tester/adapter/WaterfallStaggeredAdapter.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.adapter;
+package cn.minbb.tester.adapter;
 
 import android.content.Context;
 import android.graphics.Color;
@@ -14,8 +14,8 @@ import java.util.List;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import cn.minbb.producttester.R;
-import cn.minbb.producttester.utils.ColorUtil;
+import cn.minbb.tester.R;
+import cn.minbb.tester.utils.ColorUtil;
 
 public class WaterfallStaggeredAdapter extends RecyclerView.Adapter<WaterfallStaggeredAdapter.ViewHolder> {
 

+ 2 - 6
app/src/main/java/cn/minbb/producttester/ctrl/App.java → app/src/main/java/cn/minbb/tester/ctrl/App.java

@@ -1,14 +1,11 @@
-package cn.minbb.producttester.ctrl;
+package cn.minbb.tester.ctrl;
 
 import android.annotation.SuppressLint;
 import android.app.ActivityManager;
 import android.app.Application;
-import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
-import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 import android.os.Environment;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
@@ -21,12 +18,11 @@ import com.joanzapata.iconify.Iconify;
 import com.joanzapata.iconify.fonts.FontAwesomeModule;
 
 import java.io.File;
-import java.lang.reflect.Method;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
-import cn.minbb.producttester.R;
+import cn.minbb.tester.R;
 import lombok.Getter;
 import lombok.Setter;
 

+ 2 - 1
app/src/main/java/cn/minbb/producttester/ctrl/BluetoothChatService.java → app/src/main/java/cn/minbb/tester/ctrl/BluetoothChatService.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.ctrl;
+package cn.minbb.tester.ctrl;
 
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
@@ -432,6 +432,7 @@ public class BluetoothChatService {
                 mHandler.obtainMessage(MESSAGE_WRITE, -1, -1, buffer).sendToTarget();
             } catch (IOException e) {
                 Log.e(TAG, "Exception during write", e);
+                BluetoothChatService.this.stop();
             }
         }
 

+ 2 - 4
app/src/main/java/cn/minbb/producttester/receiver/BluetoothStatusReceiver.java → app/src/main/java/cn/minbb/tester/receiver/BluetoothStatusReceiver.java

@@ -1,17 +1,15 @@
-package cn.minbb.producttester.receiver;
+package cn.minbb.tester.receiver;
 
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Handler;
 import android.widget.Toast;
 
 import java.lang.reflect.Method;
 
-import cn.minbb.producttester.ctrl.App;
-import cn.minbb.producttester.views.ScanDeviceActivity;
+import cn.minbb.tester.ctrl.App;
 
 public class BluetoothStatusReceiver extends BroadcastReceiver {
     @Override

+ 1 - 1
app/src/main/java/cn/minbb/producttester/utils/ColorUtil.java → app/src/main/java/cn/minbb/tester/utils/ColorUtil.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.utils;
+package cn.minbb.tester.utils;
 
 import android.graphics.Color;
 

+ 1 - 1
app/src/main/java/cn/minbb/producttester/utils/DataTranslation.java → app/src/main/java/cn/minbb/tester/utils/DataTranslation.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester.utils;
+package cn.minbb.tester.utils;
 
 public class DataTranslation {
 

+ 1 - 1
app/src/main/res/layout/activity_basic_device.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".views.BasicDeviceActivity">
+    tools:context=".activities.BasicDeviceActivity">
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/content"

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -5,7 +5,7 @@
     android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".views.MainActivity">
+    tools:context=".activities.MainActivity">
 
     <android.support.v7.widget.Toolbar
         android:id="@+id/toolbar"

+ 1 - 1
app/src/main/res/layout/activity_scan_device.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    tools:context=".views.ScanDeviceActivity">
+    tools:context=".activities.ScanDeviceActivity">
 
     <android.support.v7.widget.CardView
         android:layout_width="match_parent"

+ 1 - 1
app/src/main/res/layout/activity_start.xml

@@ -7,7 +7,7 @@
     android:layout_height="match_parent"
     android:background="#FFFFFF"
     android:keepScreenOn="true"
-    tools:context=".views.StartActivity">
+    tools:context=".activities.StartActivity">
 
     <ImageView
         android:id="@+id/logo"

+ 1 - 2
app/src/main/res/layout/item_activity_device_basic.xml

@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:padding="8dp">
+    android:padding="12dp">
 
     <TextView
         android:id="@+id/key"

+ 1 - 1
app/src/test/java/cn/minbb/producttester/ExampleUnitTest.java → app/src/test/java/cn/minbb/tester/ExampleUnitTest.java

@@ -1,4 +1,4 @@
-package cn.minbb.producttester;
+package cn.minbb.tester;
 
 import org.junit.Test;