From 3bd6e9023e011336da840e11a9d48bb31c7a0261 Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Wed, 07 Nov 2018 09:31:59 +0800 Subject: [PATCH] [*]将电磁版本的唤醒心跳改成两秒,唤醒之后回到30一次心跳 [*]整体版本页面显示的绝对安全换成了安全 [*]自定义语音修改和优化,添加了无声的选择 --- .gradle/4.1/taskHistory/taskHistory.bin | 0 app/src/main/java/com/moral/yunfushao/ui/PanelView.java | 4 .gradle/4.1/javaCompile/classAnalysis.bin | 0 andbrickslib/andbrickslib.iml | 81 +-- key.jks | 0 app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java | 175 +++++++-- .gradle/4.1/taskHistory/fileSnapshots.bin | 0 app/src/main/java/com/moral/yunfushao/activity/VoiceSetActivity.java | 11 FastBleLib/FastBleLib.iml | 70 +-- .gradle/4.1/fileHashes/resourceHashesCache.bin | 0 app/build.gradle | 42 +- andbrickslib/src/main/java/com/moral/andbrickslib/utils/StringUtils.java | 2 app/app.iml | 83 +--- FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java | 2 .gradle/4.1/javaCompile/jarAnalysis.bin | 0 .gradle/4.1/fileHashes/fileHashes.lock | 0 app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java | 15 app/src/main/java/com/moral/yunfushao/utils/PermissionUtil.java | 37 ++ app/src/main/java/com/moral/yunfushao/activity/ChooseSongActivity.java | 52 +- app/src/main/java/com/moral/yunfushao/ble/BLECommon.java | 3 app/src/main/res/mipmap-hdpi/tips.png | 0 .gradle/4.1/javaCompile/taskJars.bin | 0 app/src/main/res/anim/progress.xml | 13 app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java | 242 +++++------- app/src/main/res/layout/fragment_setting_layout.xml | 51 +- .gradle/4.1/fileHashes/fileHashes.bin | 0 app/src/main/res/layout/fragment_monitor_layout.xml | 12 .gradle/4.1/javaCompile/javaCompile.lock | 0 app/src/main/res/layout/ac_ble_search_layout.xml | 76 ++- app/src/main/res/mipmap-xxhdpi/tips.png | 0 .gradle/4.1/taskHistory/taskHistory.lock | 0 FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java | 23 app/src/main/java/com/moral/yunfushao/MainActivity.java | 19 app/src/main/java/com/moral/yunfushao/adapter/BleDeviceAdapter.java | 1 .gradle/4.1/javaCompile/taskHistory.bin | 0 app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java | 9 36 files changed, 561 insertions(+), 462 deletions(-) diff --git a/.gradle/4.1/fileHashes/fileHashes.bin b/.gradle/4.1/fileHashes/fileHashes.bin index 99885b1..37aa106 100644 --- a/.gradle/4.1/fileHashes/fileHashes.bin +++ b/.gradle/4.1/fileHashes/fileHashes.bin Binary files differ diff --git a/.gradle/4.1/fileHashes/fileHashes.lock b/.gradle/4.1/fileHashes/fileHashes.lock index d2965bf..b42e628 100644 --- a/.gradle/4.1/fileHashes/fileHashes.lock +++ b/.gradle/4.1/fileHashes/fileHashes.lock Binary files differ diff --git a/.gradle/4.1/fileHashes/resourceHashesCache.bin b/.gradle/4.1/fileHashes/resourceHashesCache.bin index 30b12df..7555000 100644 --- a/.gradle/4.1/fileHashes/resourceHashesCache.bin +++ b/.gradle/4.1/fileHashes/resourceHashesCache.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/classAnalysis.bin b/.gradle/4.1/javaCompile/classAnalysis.bin index 04d2f06..9f709de 100644 --- a/.gradle/4.1/javaCompile/classAnalysis.bin +++ b/.gradle/4.1/javaCompile/classAnalysis.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/jarAnalysis.bin b/.gradle/4.1/javaCompile/jarAnalysis.bin index 2e8a73e..8c09110 100644 --- a/.gradle/4.1/javaCompile/jarAnalysis.bin +++ b/.gradle/4.1/javaCompile/jarAnalysis.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/javaCompile.lock b/.gradle/4.1/javaCompile/javaCompile.lock index f540802..aa1aed5 100644 --- a/.gradle/4.1/javaCompile/javaCompile.lock +++ b/.gradle/4.1/javaCompile/javaCompile.lock Binary files differ diff --git a/.gradle/4.1/javaCompile/taskHistory.bin b/.gradle/4.1/javaCompile/taskHistory.bin index 786a006..ba376eb 100644 --- a/.gradle/4.1/javaCompile/taskHistory.bin +++ b/.gradle/4.1/javaCompile/taskHistory.bin Binary files differ diff --git a/.gradle/4.1/javaCompile/taskJars.bin b/.gradle/4.1/javaCompile/taskJars.bin index dee8b54..68a7e63 100644 --- a/.gradle/4.1/javaCompile/taskJars.bin +++ b/.gradle/4.1/javaCompile/taskJars.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/fileSnapshots.bin b/.gradle/4.1/taskHistory/fileSnapshots.bin index 164c708..0aae236 100644 --- a/.gradle/4.1/taskHistory/fileSnapshots.bin +++ b/.gradle/4.1/taskHistory/fileSnapshots.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/taskHistory.bin b/.gradle/4.1/taskHistory/taskHistory.bin index 7443fe3..7874806 100644 --- a/.gradle/4.1/taskHistory/taskHistory.bin +++ b/.gradle/4.1/taskHistory/taskHistory.bin Binary files differ diff --git a/.gradle/4.1/taskHistory/taskHistory.lock b/.gradle/4.1/taskHistory/taskHistory.lock index 655a050..c955dac 100644 --- a/.gradle/4.1/taskHistory/taskHistory.lock +++ b/.gradle/4.1/taskHistory/taskHistory.lock Binary files differ diff --git a/FastBleLib/FastBleLib.iml b/FastBleLib/FastBleLib.iml index 52f5e6f..71d5486 100644 --- a/FastBleLib/FastBleLib.iml +++ b/FastBleLib/FastBleLib.iml @@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> - <option name="SELECTED_BUILD_VARIANT" value="debug" /> - <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> - <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <option name="SELECTED_BUILD_VARIANT" value="release" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <afterSyncTasks> - <task>generateDebugSources</task> + <task>generateReleaseSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -24,46 +24,32 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> - <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> - <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <exclude-output /> <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java index e02a858..003c7af 100644 --- a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java @@ -449,7 +449,6 @@ @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { BleLog.i("BleGattCallback���onServicesDiscovered " + mtu); - bluetoothGatt.requestMtu(mtu); connectionState = STATE_SERVICES_DISCOVERED; Iterator iterator = callbackHashMap.entrySet().iterator(); while (iterator.hasNext()) { @@ -459,6 +458,7 @@ ((BluetoothGattCallback) call).onServicesDiscovered(gatt, status); } } + bluetoothGatt.requestMtu(mtu); } @Override diff --git a/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java b/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java index 39a8596..0707b79 100644 --- a/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java +++ b/FastBleLib/src/main/java/com/clj/fastble/conn/BleConnector.java @@ -130,6 +130,8 @@ && (getCharacteristic().getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { BleLog.w(TAG, "characteristic.getProperties():" + getCharacteristic().getProperties()); + System.out.println("chenqi enableCharacteristicNotify =>" + uuid_notify); + handleCharacteristicNotificationCallback(bleCallback, uuid_notify); return setCharacteristicNotification(getBluetoothGatt(), getCharacteristic(), true, bleCallback); @@ -342,18 +344,8 @@ final String uuid_notify) { if (bleCallback != null) { -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { -// bluetoothGatt.requestMtu(10); -// } listenAndTimer(bleCallback, MSG_NOTIFY_CHA, uuid_notify, new BluetoothGattCallback() { AtomicBoolean msgRemoved = new AtomicBoolean(false); - - - @Override - public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { - super.onConnectionStateChange(gatt, status, newState); - } - @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { @@ -361,10 +353,9 @@ handler.removeMessages(MSG_NOTIFY_CHA, this); } + System.out.println("chenqi Notify Hex ->" + BleBluetooth.dumpHex(characteristic.getValue())); if (characteristic.getUuid().equals(UUID.fromString(uuid_notify))) { - System.out.println("chenqi Notify ->" + characteristic.getValue().length); - System.out.println("chenqi Notify Hex ->" + BleBluetooth.dumpHex(characteristic.getValue())); bleCallback.onSuccess(characteristic); } } @@ -387,6 +378,7 @@ @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + System.out.println("chenqi Notify Hex indicate->" + BleBluetooth.dumpHex(characteristic.getValue())); if (!msgRemoved.getAndSet(true)) { handler.removeMessages(MSG_INDICATE_DES, this); } @@ -410,6 +402,8 @@ public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { handler.removeMessages(MSG_WRITE_CHA, this); + System.out.println("chenqi Notify Hex write->" + BleBluetooth.dumpHex(characteristic.getValue())); + if (status == BluetoothGatt.GATT_SUCCESS) { if (characteristic.getUuid().equals(UUID.fromString(uuid_write))) { @@ -435,6 +429,8 @@ @Override public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + System.out.println("chenqi Notify Hex indicate read->" + BleBluetooth.dumpHex(characteristic.getValue())); + if (!msgRemoved.getAndSet(true)) { handler.removeMessages(MSG_READ_CHA, this); } @@ -460,6 +456,8 @@ @Override public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { handler.removeMessages(MSG_READ_RSSI, this); + System.out.println("chenqi Notify Hex rssi->" + BleBluetooth.dumpHex(characteristic.getValue())); + if (status == BluetoothGatt.GATT_SUCCESS) { bleCallback.onSuccess(rssi); } else { @@ -487,7 +485,6 @@ private void listenAndTimer(BleCallback bleCallback, int what, String uuid, BluetoothGattCallback callback) { bleCallback.setBluetoothGattCallback(callback); bleBluetooth.addGattCallback(uuid, callback); - Message msg = handler.obtainMessage(what, bleCallback); handler.sendMessageDelayed(msg, timeOutMillis); } diff --git a/andbrickslib/andbrickslib.iml b/andbrickslib/andbrickslib.iml index cf8b7b2..4c2e7ee 100644 --- a/andbrickslib/andbrickslib.iml +++ b/andbrickslib/andbrickslib.iml @@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> - <option name="SELECTED_BUILD_VARIANT" value="debug" /> - <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> - <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <option name="SELECTED_BUILD_VARIANT" value="release" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <afterSyncTasks> - <task>generateDebugSources</task> + <task>generateReleaseSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -24,46 +24,32 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> - <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> - <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <exclude-output /> <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> @@ -130,16 +116,5 @@ <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.9.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.afollestad.material-dialogs:commons-0.9.4.4" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> </component> </module> \ No newline at end of file diff --git a/andbrickslib/src/main/java/com/moral/andbrickslib/utils/StringUtils.java b/andbrickslib/src/main/java/com/moral/andbrickslib/utils/StringUtils.java index d541ff0..503a25a 100644 --- a/andbrickslib/src/main/java/com/moral/andbrickslib/utils/StringUtils.java +++ b/andbrickslib/src/main/java/com/moral/andbrickslib/utils/StringUtils.java @@ -453,6 +453,6 @@ for (int i = start; i <= end; i++) { buffer.append(strings[i]); } - return buffer.toString(); + return buffer.toString().trim(); } } diff --git a/app/app.iml b/app/app.iml index 1006a91..9736502 100644 --- a/app/app.iml +++ b/app/app.iml @@ -8,11 +8,11 @@ </facet> <facet type="android" name="Android"> <configuration> - <option name="SELECTED_BUILD_VARIANT" value="debug" /> - <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> - <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <option name="SELECTED_BUILD_VARIANT" value="release" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleRelease" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileReleaseSources" /> <afterSyncTasks> - <task>generateDebugSources</task> + <task>generateReleaseSources</task> </afterSyncTasks> <option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> @@ -23,46 +23,32 @@ </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> - <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> - <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <output url="file://$MODULE_DIR$/build/intermediates/classes/release" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/release" /> <exclude-output /> <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/release" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/release" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/release" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/release/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testRelease/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> @@ -140,19 +126,6 @@ <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-25.3.1" level="project" /> <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.9.0@jar" level="project" /> <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-25.3.1" level="project" /> - <orderEntry type="module" module-name="andbrickslib" /> - <orderEntry type="module" module-name="FastBleLib" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-2.2.2" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-2.2.2" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish-0.5" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" /> - <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" /> <orderEntry type="module" module-name="andbrickslib" /> <orderEntry type="module" module-name="FastBleLib" /> </component> diff --git a/app/build.gradle b/app/build.gradle index 1460c65..6afc232 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,16 +8,18 @@ minSdkVersion 21 targetSdkVersion 25 versionCode 2 - versionName "1.0.2_sp3" + versionName "1.0.2_sp10" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.debug } + + signingConfigs { key { - keyAlias 'qxpc' - keyPassword '123456' - storeFile file('../pregnancy_guard_android/qixingpiaochong') - storePassword '123456' + keyAlias 'moral' + keyPassword 'moral123456' + storeFile file('../pregnancy_guard_android/key.jks') + storePassword 'moral123456' } } sourceSets { @@ -54,22 +56,22 @@ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support.constraint:constraint-layout:1.0.2' - compile 'com.android.support:cardview-v7:25.3.1' - testCompile 'junit:junit:4.12' - compile project(':andbrickslib') - compile project(':FastBleLib') + implementation 'com.android.support:appcompat-v7:25.3.1' + implementation 'com.android.support.constraint:constraint-layout:1.0.2' + implementation 'com.android.support:cardview-v7:25.3.1' + testImplementation 'junit:junit:4.12' + implementation project(':andbrickslib') + implementation project(':FastBleLib') //������������ - compile 'in.srain.cube:ultra-ptr:1.0.11' + implementation 'in.srain.cube:ultra-ptr:1.0.11' //������������ - compile 'com.github.bumptech.glide:glide:3.7.0' + implementation 'com.github.bumptech.glide:glide:3.7.0' //������������ - compile 'com.lzy.net:okgo:2.1.4' - compile files('libs/BaiduLBS_Android.jar') - compile 'pub.devrel:easypermissions:0.4.0' - compile 'com.daimajia.numberprogressbar:library:1.4@aar' - compile 'org.greenrobot:eventbus:3.0.0' - compile 'com.github.lecho:hellocharts-library:1.5.8@aar' - compile 'com.contrarywind:Android-PickerView:3.1.2' + implementation 'com.lzy.net:okgo:2.1.4' + implementation files('libs/BaiduLBS_Android.jar') + implementation 'pub.devrel:easypermissions:0.4.0' + implementation 'com.daimajia.numberprogressbar:library:1.4@aar' + implementation 'org.greenrobot:eventbus:3.0.0' + implementation 'com.github.lecho:hellocharts-library:1.5.8@aar' + implementation 'com.contrarywind:Android-PickerView:3.1.2' } diff --git a/app/src/main/java/com/moral/yunfushao/MainActivity.java b/app/src/main/java/com/moral/yunfushao/MainActivity.java index 2740b3f..3887a73 100644 --- a/app/src/main/java/com/moral/yunfushao/MainActivity.java +++ b/app/src/main/java/com/moral/yunfushao/MainActivity.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.content.pm.PackageManager; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.AsyncTask; @@ -43,6 +44,7 @@ import com.moral.yunfushao.model.EventMessage; import com.moral.yunfushao.model.User; import com.moral.yunfushao.update.UpdateManager; +import com.moral.yunfushao.utils.PermissionUtil; import org.greenrobot.eventbus.EventBus; import org.json.JSONException; @@ -86,6 +88,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bindService(); + PermissionUtil.verifyStoragePermissions(this); } @Override @@ -213,6 +216,20 @@ } } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + if (requestCode == 1) { + for (int i = 0; i < permissions.length; i++) { + if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { + //������������ + PermissionUtil.verifyStoragePermissions(this); + } + } + } + } + UpdateManager manager = new UpdateManager(MainActivity.this); private class checkUpdateTask extends AsyncTask<String, Void, String> { @@ -307,8 +324,6 @@ public void onServiceDisconnected(ComponentName name) { mBluetoothService = null; } - - }; private BluetoothService.Callback callback = new BluetoothService.Callback() { diff --git a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java index a97f02c..913fd46 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java @@ -105,10 +105,10 @@ if (MainApp.theApp.bleManager != null) { MainApp.theApp.bleManager.closeBluetoothGatt(); } + mBluetoothService.connectDevice(scanResultList.get(position)); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.BLUETOOCH_CHANGE_CONNECT); EventBus.getDefault().post(eventMessage); - mBluetoothService.connectDevice(scanResultList.get(position)); } } @@ -121,7 +121,8 @@ @Override protected void initListener() { - iv_search.setOnClickListener(this); +// iv_search.setOnClickListener(this); + iv_searchpic.setOnClickListener(this); } @Override @@ -132,7 +133,8 @@ @Override protected void processClick(View view) { switch (view.getId()) { - case R.id.iv_search: + case R.id.iv_searchpic: + mBluetoothService.openBlueTooth(); if (isScan) { if (mBluetoothService != null) { mBluetoothService.cancelScan(); @@ -249,7 +251,6 @@ progressDialog.dismiss(); finish(); } - } }; diff --git a/app/src/main/java/com/moral/yunfushao/activity/ChooseSongActivity.java b/app/src/main/java/com/moral/yunfushao/activity/ChooseSongActivity.java index be9d00a..8e95b39 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/ChooseSongActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/ChooseSongActivity.java @@ -3,48 +3,38 @@ import android.content.Intent; import android.content.res.AssetManager; import android.media.MediaPlayer; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.View; -import com.lzy.okgo.cache.CacheMode; import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration; import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter; -import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.SongAdapter; -import com.moral.yunfushao.adapter.VoiceAdapter; import com.moral.yunfushao.base.BaseListActivity; -import com.moral.yunfushao.common.API; -import com.moral.yunfushao.httputils.HttpCallBack; -import com.moral.yunfushao.httputils.HttpUtils; import com.moral.yunfushao.model.Song; -import com.moral.yunfushao.model.VoiceBean; import com.moral.yunfushao.utils.AudioUtils; +import com.moral.yunfushao.utils.PermissionUtil; import java.io.IOException; import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; /** * Created by haijiang on 2017/7/12. */ -public class ChooseSongActivity extends BaseListActivity implements SongAdapter.OnBtnClickListener{ +public class ChooseSongActivity extends BaseListActivity implements SongAdapter.OnBtnClickListener { private SongAdapter adapter; private ArrayList<Song> voiceList = new ArrayList<>(); AssetManager am; MediaPlayer mp; - Handler mHandler = new Handler(){ + Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); - if(msg.what == 1){ + if (msg.what == 1) { setNormalView(); mPtrFrame.refreshComplete(); adapter.notifyDataSetChanged(); @@ -52,9 +42,11 @@ } }; private int index; + @Override protected void initOtherView() { - index = getIntent().getIntExtra("position",0); + PermissionUtil.verifyStoragePermissions(this); + index = getIntent().getIntExtra("position", 0); tv_title.setText("������������"); DividerItemDecoration line = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST); mRecyclerView.addItemDecoration(line); @@ -78,7 +70,6 @@ protected void onLoadMore() { - } @Override @@ -89,7 +80,7 @@ @Override protected void onDestroy() { super.onDestroy(); - if(mp!=null&&mp.isPlaying()){ + if (mp != null && mp.isPlaying()) { mp.stop(); mp.release(); } @@ -104,18 +95,21 @@ protected void initListener() { } - Thread mThread; + + Thread mThread; + @Override protected void initData() { getData(); } - private void getData(){ + + private void getData() { setLoadingView(); mThread = new Thread(new Runnable() { @Override public void run() { ArrayList<Song> temp = AudioUtils.getAllSongs(ChooseSongActivity.this); - if(temp!=null){ + if (temp != null) { voiceList.clear(); voiceList.addAll(temp); mHandler.sendEmptyMessage(1); @@ -127,7 +121,7 @@ @Override protected void processClick(View view) { - switch (view.getId()){ + switch (view.getId()) { case R.id.tv_left: finish(); break; @@ -143,14 +137,14 @@ @Override public void playClick(int position) { Song voiceBean = voiceList.get(position); - if(voiceBean.isPlay()){ + if (voiceBean.isPlay()) { mp.stop(); voiceBean.setPlay(false); - }else{ - if(mp!=null&&mp.isPlaying()){ + } else { + if (mp != null && mp.isPlaying()) { mp.stop(); mp.release(); - for (Song voice :voiceList){ + for (Song voice : voiceList) { voice.setPlay(false); } adapter.notifyDataSetChanged(); @@ -171,10 +165,10 @@ @Override public void setClick(int position) { Intent intent = new Intent(); - intent.putExtra("position",index); - intent.putExtra("url",voiceList.get(position).getFileUrl()); - intent.putExtra("name",voiceList.get(position).getTitle()); - setResult(RESULT_OK,intent); + intent.putExtra("position", index); + intent.putExtra("url", voiceList.get(position).getFileUrl()); + intent.putExtra("name", voiceList.get(position).getTitle()); + setResult(RESULT_OK, intent); finish(); } } diff --git a/app/src/main/java/com/moral/yunfushao/activity/VoiceSetActivity.java b/app/src/main/java/com/moral/yunfushao/activity/VoiceSetActivity.java index 5149048..9a8bd29 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/VoiceSetActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/VoiceSetActivity.java @@ -20,7 +20,6 @@ import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.VoiceAdapter; import com.moral.yunfushao.base.BaseListActivity; -import com.moral.yunfushao.ble.BLECommon; import com.moral.yunfushao.common.API; import com.moral.yunfushao.common.AppConfig; import com.moral.yunfushao.httputils.HttpCallBack; @@ -46,6 +45,7 @@ MediaPlayer mp; private MaterialDialog resetDialog; + private int oldType = 0; private void showReset() { resetDialog = MaterialDialogUtils.showCallBaclDialog(this, "������������", "���������������������������?", new MaterialDialog.SingleButtonCallback() { @@ -101,6 +101,8 @@ MainApp.theApp.sharedPreferencesUtil.saveVideoList(FastJsonTools.toJson(voiceList)); adapter.notifyDataSetChanged(); mToatUtils.showSingleLongToast("������������������"); + oldType = MainApp.theApp.sharedPreferencesUtil.getVoiceType(); + MainApp.theApp.sharedPreferencesUtil.saveVoiceType(3); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.SET_VOICE); EventBus.getDefault().post(eventMessage); @@ -184,8 +186,10 @@ adapter.notifyDataSetChanged(); } if (voiceBean.isDefaultMusic()) { - mp = MediaPlayer.create(this, Uri.parse(voiceBean.getRes())); - mp.start(); + if (voiceBean.getRes() != null) { + mp = MediaPlayer.create(this, Uri.parse(voiceBean.getRes())); + mp.start(); + } } else { mp = new MediaPlayer(); try { @@ -269,6 +273,7 @@ voiceBean.setVoiceName("������"); voiceList.add(voiceBean); MainApp.theApp.sharedPreferencesUtil.saveVideoList(FastJsonTools.toJson(voiceList)); + MainApp.theApp.sharedPreferencesUtil.saveVoiceType(oldType); adapter.notifyDataSetChanged(); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.SET_VOICE); diff --git a/app/src/main/java/com/moral/yunfushao/adapter/BleDeviceAdapter.java b/app/src/main/java/com/moral/yunfushao/adapter/BleDeviceAdapter.java index 23260e7..9a925b2 100644 --- a/app/src/main/java/com/moral/yunfushao/adapter/BleDeviceAdapter.java +++ b/app/src/main/java/com/moral/yunfushao/adapter/BleDeviceAdapter.java @@ -15,7 +15,6 @@ /** * Created by haijiang on 2017/7/6. */ - public class BleDeviceAdapter extends CommonAdapter<ScanResult> { public BleDeviceAdapter(RecyclerView v, int layoutId, List<ScanResult> datas) { super(v, layoutId, datas); diff --git a/app/src/main/java/com/moral/yunfushao/ble/BLECommon.java b/app/src/main/java/com/moral/yunfushao/ble/BLECommon.java index 4626073..efb4048 100644 --- a/app/src/main/java/com/moral/yunfushao/ble/BLECommon.java +++ b/app/src/main/java/com/moral/yunfushao/ble/BLECommon.java @@ -10,7 +10,8 @@ public final static String USR_SERVICE = "0003cdd0-0000-1000-8000-00805f9b0131"; public final static String BLE_SEARCH = "6A09010002006B"; public final static String BLE_CLEAR = "6A09010001006B"; - public final static String BLE_HEART = "6A09010005006B";//������3��������������� + public final static String BLE_HEART = "6A070100050D6B";//������3��������������� + //0x6A 0x07 0x01 0x00 0x05 0x0d 0x6B public final static String BLE_HOUR_REC = "7A7B";//������3��������������� //���������7A������������������������������������������������������ diff --git a/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java b/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java index 81f7872..de3d4bc 100644 --- a/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java +++ b/app/src/main/java/com/moral/yunfushao/ble/BluetoothService.java @@ -154,6 +154,12 @@ mCallback.onConnecting(); } + System.out.println("chenqi blename old = "+ MainApp.theApp.sharedPreferencesUtil.getBLE()); + + System.out.println("chenqi blename = "+ scanResult.getDevice().getAddress()); + + openBlueTooth(); + bleManager.connectDevice(scanResult, false, new BleGattCallback() { @Override @@ -561,6 +567,8 @@ mCallback.onStartScan(); } + openBlueTooth(); + bleManager.scanMacAndConnect(mac, 5000, false, new BleGattCallback() { @Override public void onFoundDevice(ScanResult scanResult) { @@ -590,6 +598,7 @@ @Override public void onConnectError(BleException exception) { + System.out.println("chenqi chenqi" + exception.getDescription()) ; runOnMainThread(new Runnable() { @Override public void run() { @@ -731,5 +740,9 @@ } } - + public void openBlueTooth() { + if (bleManager != null) { + bleManager.enableBluetooth(); + } + } } diff --git a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java index e6c34c2..c4c4445 100644 --- a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java +++ b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java @@ -2,7 +2,6 @@ import android.animation.Animator; import android.animation.ObjectAnimator; -import android.annotation.SuppressLint; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattService; @@ -13,7 +12,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; -import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; @@ -75,6 +73,7 @@ */ public class FragmentMonitor extends BaseFragment { + private String TGA = getClass().getSimpleName(); /** * ������������ */ @@ -96,39 +95,65 @@ //������������������������ private ArrayList<RecData> submitTempResult = new ArrayList<>(); - private Timer heartTimer, resTimer, chonglianTimer; + //������������ + private int HEARTTIMES = 2; + //������������ + private int RECONNECTTIMES = 8000; + //handler������������ private Handler handler = new Handler(); - private Runnable runnable = new Runnable() { + + private Runnable heartRunnable = new Runnable() { @Override public void run() { - checkTime(); - checkTimeCount++; - handler.postDelayed(this, 5000); + if (MainApp.theApp.bleManager == null) { + return; + } + if (!MainApp.theApp.bleManager.isConnectingOrConnected()) { + return; + } + //������������ + if (FragmentMonitor.this.mBluetoothService == null) { + return; + } + if (FragmentMonitor.this.mBluetoothService.getWirteCharacteristic() == null) { + return; + } + if (FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getService() == null) { + return; + } + FragmentMonitor.this.mBluetoothService.write(FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), + FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getUuid().toString(), + BLECommon.BLE_HEART, null); + Log.d(TGA, "������������"); + heart(); + } + }; + private Runnable reconnectRunnable = new Runnable() { + @Override + public void run() { + //������ + if (FragmentMonitor.this.mBluetoothService == null) { + return; + } + String mac = MainApp.theApp.sharedPreferencesUtil.getBLE(); + if (!TextUtils.isEmpty(mac) && MainApp.theApp.bleManager.isBlueEnable()) { + if (MainApp.theApp.bleManager.isConnectingOrConnected()) { + return; + } + Log.d(TGA, "������������"); + FragmentMonitor.this.mBluetoothService.scanAndConnect5(mac); + } + reconnect(); } }; - private int checkTimeCount = 0; private void doHandleData(String result) { if (StringUtils.isEmpty(result)) { return; } - - //������������"������������������������������"���������5������������������������������������������ - if (result.startsWith(BLECommon.BLE_REC_TIME) || checkTimeCount > 5) { - DebugUtils.sendData("data", result); - - handler.removeCallbacks(runnable); - checkTimeCount = 0; - - if (result.length() > 14) { - result = result.substring(14); - doHandleData(result); - } - } - if (result.startsWith("3A")) { if (result.length() >= 16) { DebugUtils.sendData("data", result); @@ -171,12 +196,8 @@ */ @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) public void eventComing(EventMessage msg) { - System.out.println("chenqi msge -> " + msg.getType()); if (msg.getType() == AppConfig.GET_BLE_SERVICE) { - if (chonglianTimer != null) { - chonglianTimer.cancel(); - chonglianTimer = null; - } + resetHandler(); pv.setStatusStr("���������"); //������������ mBluetoothService = ((MainActivity) getActivity()).getBluetoothService(); @@ -203,7 +224,6 @@ mBluetoothService.setCharacteristic(characteristic); } } - } /** @@ -221,43 +241,30 @@ String result = StringUtils.byteArrayToHexStr(characteristic.getValue()); stringResult.append(result); doHandleData(result); - stringResult = new StringBuilder(); } }); + HEARTTIMES = 30; } @Override public void onFailure(final BleException exception) { - } @Override public void onInitiatedResult(boolean result) { - } }); /** * ������������������ */ - handler.postDelayed(runnable, 5000); - - /** - * ������������������������ - */ - if (mBluetoothService == null) { - return; - } - if (mBluetoothService.getWirteCharacteristic() == null) { - return; - } - mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_HEART, null); +// handler.postDelayed(runnable, 5000); heart(); } } else if (msg.getType() == AppConfig.GET_BLE_DISCONNECT) { preLevel = -1; showStatus(-1); - chonglian(); + handler.postDelayed(reconnectRunnable, RECONNECTTIMES); stop(); isVirating = false; AudioUtils.virateCancle(getActivity()); @@ -336,21 +343,20 @@ } @Override + public void onResume() { + super.onResume(); + textShowMac(); + } + + @Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); - if (heartTimer != null) { - heartTimer.cancel(); - heartTimer = null; - } if (timer != null) { timer.cancel(); timer = null; } - if (chonglianTimer != null) { - chonglianTimer.cancel(); - chonglianTimer = null; - } + handler.removeCallbacksAndMessages(null); stop(); isVirating = false; AudioUtils.virateCancle(getActivity()); @@ -492,79 +498,18 @@ }, 0, submitTime * 1000); } - /** - * ���������������������3������ - */ - @SuppressLint("HandlerLeak") - Handler heartHandler = new Handler() { - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - if (MainApp.theApp.bleManager == null) { - return; - } - if (!MainApp.theApp.bleManager.isConnectingOrConnected()) { - return; - } - //������������ - if (FragmentMonitor.this.mBluetoothService == null) { - return; - } - if (FragmentMonitor.this.mBluetoothService.getWirteCharacteristic() == null) { - return; - } - if (FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getService() == null) { - return; - } - FragmentMonitor.this.mBluetoothService.write(FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), FragmentMonitor.this.mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_HEART, null); - Log.d("xintiao", "������������"); - break; - case 2: - //������ - if (FragmentMonitor.this.mBluetoothService == null) { - return; - } - String mac = MainApp.theApp.sharedPreferencesUtil.getBLE(); - if (!TextUtils.isEmpty(mac) && MainApp.theApp.bleManager.isBlueEnable()) { - if (MainApp.theApp.bleManager.isConnectingOrConnected()) { - return; - } - Log.d("chonglian", "������������"); - FragmentMonitor.this.mBluetoothService.scanAndConnect5(mac); - } - break; - } - super.handleMessage(msg); - } - - }; - private void heart() { - if (heartTimer == null) { - heartTimer = new Timer(); - heartTimer.schedule(new TimerTask() { - @Override - public void run() { - Message message = new Message(); - message.what = 1; - heartHandler.sendMessage(message); - } - }, 0, 1000 * 30); - } + handler.postDelayed(heartRunnable, 1000 * HEARTTIMES); } - private void chonglian() { - if (chonglianTimer == null) { - chonglianTimer = new Timer(); - chonglianTimer.schedule(new TimerTask() { - @Override - public void run() { - Message message = new Message(); - message.what = 2; - heartHandler.sendMessage(message); - } - }, 0, 1000 * 8); - } + private void reconnect() { + handler.postDelayed(reconnectRunnable, RECONNECTTIMES); + } + + private void resetHandler() { + handler.removeCallbacks(reconnectRunnable); + handler.removeCallbacks(heartRunnable); + HEARTTIMES = 2; } private void submitData() { @@ -608,6 +553,7 @@ private void showStatus(int level) { int yanzhang = R.mipmap.icon_yanzhong; int danger = R.mipmap.icon_danger; + iv_dianliang.setVisibility(View.VISIBLE); if (type == 1) { //������ yanzhang = R.mipmap.icon_yanzhong; @@ -661,6 +607,7 @@ tv_status.setTextColor(getResources().getColor(R.color.red_txt)); ll_status.setBackgroundResource(R.mipmap.bg_conner_red); } else if (level == -1) { + iv_dianliang.setVisibility(View.GONE); tv_tishi.setText("������������������"); tv_tishi.setBackgroundResource(R.mipmap.bt_offline); iv_bottom_status.setImageResource(R.mipmap.icon_offline); @@ -682,9 +629,29 @@ tv_status.setText("���������"); ll_status.setBackgroundResource(R.mipmap.bg_corner_gray); pv.setPercent(0); - pv.setStatusStr("���������"); + pv.setStatusStr("���������"); tv_ljjl.setText("0"); tv_shishi.setText("0"); + } + } + + private void textShowMac() { + if (BuildConfig.BUILD_TYPE.equals(VersionConstants.DEBUG)) { + final TextView tv_text_mac = (TextView) findView(R.id.tv_text_mac); + tv_desc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + tv_text_mac.setText("Mac: " + MainApp.theApp.sharedPreferencesUtil.getBLE()); + FlipAnimatorXViewShow(tv_desc, tv_text_mac, 100L); + } + }); + + tv_text_mac.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FlipAnimatorXViewShow(tv_text_mac, tv_desc, 100L); + } + }); } } @@ -776,13 +743,13 @@ } } + /** * 7A������������������ * 7A0024010002D8B04CE90E6300000003000003EE0000000000000EC6000000000017347B0D0A * ������������������ */ private void parseHoutData(String nowResult) { - System.out.println("chenqi elec parseHoutData" + nowResult); if (TextUtils.isEmpty(nowResult)) { return; } @@ -791,13 +758,11 @@ if (strings[0].startsWith("7A") && strings[35].endsWith("7B")) { String realString = StringUtils.subStrings(strings, 21, 23); int electric_field = Integer.parseInt(realString, 16); - int b1 = Integer.parseInt(strings[24], 16); - int b2 = Integer.parseInt(strings[25], 16); - int baojing = Integer.parseInt(strings[29], 16); - int elec = Integer.parseInt(StringUtils.subStrings(strings, 13, 15)); -// T.show("bl = " + strings[24] + " -- b2 = " + strings[25]); -// -// System.out.println("bl = " + b1 + " -- b2 = " + b2); + int b1 = Integer.parseInt(strings[24].trim(), 16); + int b2 = Integer.parseInt(strings[25].trim(), 16); + int baojing = Integer.parseInt(strings[29].trim(), 16); + + double elec = Integer.parseInt(StringUtils.subStrings(strings, 13, 15), 16); double electricFieldValue = (electric_field) / 100.0; double elecValue = (elec) / 100.0; @@ -869,13 +834,11 @@ AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0); } } - System.out.println("chenqi elec B-- " + b2); /** * ������������ */ showPower(b1, b2); submitResult.add(data); - // realResult.clear(); } } @@ -985,6 +948,11 @@ } } + /** + * ������������������ + * + * @param level + */ public void play(int level) { Log.d("music", "preLevel:" + preLevel + "----level:" + level); if (preLevel == level) { @@ -996,9 +964,11 @@ } VoiceBean voiceBean = voiceList.get(level); if (voiceBean.isDefaultMusic()) { - mp = MediaPlayer.create(getActivity(), Uri.parse(voiceBean.getRes())); - mp.start(); - mp.setLooping(true); + if (voiceBean.getRes() != null) { + mp = MediaPlayer.create(getActivity(), Uri.parse(voiceBean.getRes())); + mp.start(); + mp.setLooping(true); + } } else { mp = new MediaPlayer(); try { diff --git a/app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java b/app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java index 585a957..40922d2 100644 --- a/app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java +++ b/app/src/main/java/com/moral/yunfushao/fragment/FragmentSettings.java @@ -1,12 +1,16 @@ package com.moral.yunfushao.fragment; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.support.v7.widget.SwitchCompat; import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; -import android.widget.CompoundButton; +import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -27,7 +31,6 @@ import com.moral.yunfushao.httputils.HttpUtils; import com.moral.yunfushao.model.EventMessage; import com.moral.yunfushao.model.VoiceBean; -import com.moral.yunfushao.utils.DebugUtils; import org.greenrobot.eventbus.EventBus; @@ -42,11 +45,12 @@ public class FragmentSettings extends BaseFragment { private TextView tv_version; - private RelativeLayout rl_setvoice,rl_refresh; + private RelativeLayout rl_setvoice, rl_refresh; private Button bt_sure; - private Button bt_look; - private SwitchCompat sc_open,sc_male; - private int refreshIndex=0; + private Button bt_look, sc_male; + private SwitchCompat sc_open; + private int refreshIndex = 0; + @Override protected int getLayoutId() { return R.layout.fragment_setting_layout; @@ -61,17 +65,11 @@ sc_open = findView(R.id.sc_open); sc_male = findView(R.id.sc_male); tv_version = findView(R.id.tv_version); - tv_version.setText("������������V"+getVersion()); + tv_version.setText("������������V" + getVersion()); + // bt_look.setVisibility(DebugUtils.debug_mode ? View.VISIBLE : View.GONE); bt_look.setVisibility(View.GONE); - if (MainApp.theApp.sharedPreferencesUtil.getVoiceType() == 0) { - sc_male.setChecked(false); - sc_male.setText("���"); - }else{ - sc_male.setChecked(true); - sc_male.setText("���"); - } } @Override @@ -82,40 +80,123 @@ sc_open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if(sc_open.isChecked()){ - update("is_open_upload","1"); - }else{ - update("is_open_upload","0"); + if (sc_open.isChecked()) { + update("is_open_upload", "1"); + } else { + update("is_open_upload", "0"); } } }); - sc_male.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + sc_male.setOnClickListener(new View.OnClickListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - if(b){ - sc_male.setText("���"); - MainApp.theApp.sharedPreferencesUtil.saveVoiceType(1); - AppConfig.voideUrl1 = "http://yfsapi.7drlb.com/video/girl/music.mp3"; - AppConfig.voideUrl2 = "http://yfsapi.7drlb.com/video/girl/music1.mp3"; - AppConfig.voideUrl3 = "http://yfsapi.7drlb.com/video/girl/music2.mp3"; - }else{ - sc_male.setText("���"); - MainApp.theApp.sharedPreferencesUtil.saveVoiceType(0); - AppConfig.voideUrl1 = "http://yfsapi.7drlb.com/video/boy/music.mp3"; - AppConfig.voideUrl2 = "http://yfsapi.7drlb.com/video/boy/music1.mp3"; - AppConfig.voideUrl3 = "http://yfsapi.7drlb.com/video/boy/music2.mp3"; - } - reset(); + public void onClick(View v) { + chooseSoundCategory(); } }); bt_look.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent intent = new Intent(getActivity(), TestActivity.class); - startActivity(intent); + Intent intent = new Intent(getActivity(), TestActivity.class); + startActivity(intent); } }); + } + + @Override + public void onResume() { + super.onResume(); + switch (MainApp.theApp.sharedPreferencesUtil.getVoiceType()) { + case 0: + sc_male.setText("������"); + break; + case 1: + sc_male.setText("������"); + break; + case 2: + sc_male.setText("������"); + break; + case 3: + sc_male.setText("���������"); + break; + } + } + + /** + * ��������������������� + */ + private void chooseSoundCategory() { + final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + ListView listView = new ListView(getActivity()); + ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), + android.R.layout.simple_expandable_list_item_1, + new String[]{"������", "������", "������"}); + listView.setAdapter(arrayAdapter); + builder.setTitle("������������������!"); + builder.setIcon(R.mipmap.icon_voice); + builder.setView(listView); + final AlertDialog alertDialog = builder.create(); + alertDialog.show(); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + alertDialog.dismiss(); + ejectTips(position); + } + }); + } + + /** + * ��������������������� + */ + private void ejectTips(final int position) { + final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle("���������������"); + builder.setIcon(R.mipmap.tips); + builder.setMessage("������������������������������������������������������������������������"); + builder.setNegativeButton("������", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + setUpDefaultRingtone(position); + } + }); + builder.setPositiveButton("������", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + final AlertDialog alertDialog = builder.create(); + alertDialog.show(); + } + + private void setUpDefaultRingtone(int type) { + switch (type) { + case 0: + sc_male.setText("������"); + MainApp.theApp.sharedPreferencesUtil.saveVoiceType(0); + AppConfig.voideUrl1 = "http://yfsapi.7drlb.com/video/boy/music.mp3"; + AppConfig.voideUrl2 = "http://yfsapi.7drlb.com/video/boy/music1.mp3"; + AppConfig.voideUrl3 = "http://yfsapi.7drlb.com/video/boy/music2.mp3"; + break; + case 1: + sc_male.setText("������"); + MainApp.theApp.sharedPreferencesUtil.saveVoiceType(1); + AppConfig.voideUrl1 = "http://yfsapi.7drlb.com/video/girl/music.mp3"; + AppConfig.voideUrl2 = "http://yfsapi.7drlb.com/video/girl/music1.mp3"; + AppConfig.voideUrl3 = "http://yfsapi.7drlb.com/video/girl/music2.mp3"; + break; + case 2: + sc_male.setText("������"); + MainApp.theApp.sharedPreferencesUtil.saveVoiceType(2); + AppConfig.voideUrl1 = null; + AppConfig.voideUrl2 = null; + AppConfig.voideUrl3 = null; + break; + } + reset(); } @Override @@ -124,17 +205,17 @@ timeList.add("20s"); timeList.add("30s"); int open = MainApp.theApp.sharedPreferencesUtil.getLoginInfo().getIs_open_upload(); - if(open == 0){ + if (open == 0) { sc_open.setChecked(false); - }else{ + } else { sc_open.setChecked(true); } int refresh = MainApp.theApp.sharedPreferencesUtil.getLoginInfo().getRefresh_frequency(); - if(refresh == 10){ + if (refresh == 10) { refreshIndex = 0; - }else if(refresh == 20){ + } else if (refresh == 20) { refreshIndex = 1; - }else if(refresh == 30){ + } else if (refresh == 30) { refreshIndex = 2; } } @@ -172,7 +253,7 @@ @Override public void onOptionsSelect(int options1, int options2, int options3, View v) { refreshIndex = options1; - update("refresh_frequency",(options1+1)*10+""); + update("refresh_frequency", (options1 + 1) * 10 + ""); } }).setOutSideCancelable(true).build(); sexView.setSelectOptions(refreshIndex); @@ -182,6 +263,7 @@ /** * ������������������������������������['refresh_frequency', 'video', 'is_open_upload'] + * * @param field * @param value */ @@ -195,9 +277,9 @@ @Override public void onSuccess(String res, String msg) { mToatUtils.showSingletonToast(msg); - if("refresh_frequency".equals(field)){ + if ("refresh_frequency".equals(field)) { MainApp.theApp.sharedPreferencesUtil.setRefreh(Integer.parseInt(value)); - }else if("is_open_upload".equals(field)){ + } else if ("is_open_upload".equals(field)) { MainApp.theApp.sharedPreferencesUtil.setUpload(Integer.parseInt(value)); } EventMessage event = new EventMessage(); @@ -215,7 +297,7 @@ } @Override - public void onFail(int errno,String s) { + public void onFail(int errno, String s) { mToatUtils.showSingletonToast(s); if (progressDialog.isShowing()) { progressDialog.dismiss(); @@ -226,6 +308,7 @@ /** * ��������������� + * * @return ������������������������ */ public String getVersion() { @@ -241,6 +324,7 @@ } private ArrayList<VoiceBean> voiceList = new ArrayList<>(); + private void reset() { voiceList.clear(); VoiceBean voiceBean = new VoiceBean(); @@ -265,5 +349,6 @@ EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.SET_VOICE); EventBus.getDefault().post(eventMessage); + mToatUtils.showSingleLongToast("������������������"); } } diff --git a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java index c712411..29056eb 100644 --- a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java +++ b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java @@ -60,7 +60,7 @@ private Paint drawTextPaint; private int textColor = Color.GRAY; private int textSize = 36; - private String[] level = {"������������", "������������", "������������", "������������"}; + private String[] level = {"������", "������������", "������������", "������������"}; //������������ private Paint mCirclePaint; @@ -225,8 +225,6 @@ float bitH = circleR; float bitW = bitH * 0.448f; canvas.save(); - - System.out.println("chenqi percent connect" + percent); canvas.rotate(percent * 300 - 150, mWidth / 2, mWidth / 2); RectF btmRect = new RectF((float) (cirlcleRect.left + bitH - bitW * 0.535), (float) (cirlcleRect.top + mCircleWidth * 0.68), (float) (cirlcleRect.left + bitH + bitW * 0.465), (float) (cirlcleRect.top + bitH + mCircleWidth * 0.68)); // Log.d("haijiang","left="+btmRect.left); diff --git a/app/src/main/java/com/moral/yunfushao/utils/PermissionUtil.java b/app/src/main/java/com/moral/yunfushao/utils/PermissionUtil.java new file mode 100644 index 0000000..9aff451 --- /dev/null +++ b/app/src/main/java/com/moral/yunfushao/utils/PermissionUtil.java @@ -0,0 +1,37 @@ +package com.moral.yunfushao.utils; + +import android.app.Activity; +import android.content.pm.PackageManager; +import android.os.Build; +import android.support.v4.app.ActivityCompat; + +/** + * @author : chenqi. + * @e_mail : 1650699704@163.com. + * @create_time : 2018/11/5. + * @Package_name: pregnancy_guard_android + */ +public class PermissionUtil { + private static final int REQUEST_EXTERNAL_STORAGE = 1; + private static String[] PERMISSIONS_STORAGE = { + "android.permission.READ_EXTERNAL_STORAGE", + "android.permission.WRITE_EXTERNAL_STORAGE"}; + + + public static void verifyStoragePermissions(Activity activity) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + return; + } + try { + //��������������������������� + int permission = ActivityCompat.checkSelfPermission(activity, + "android.permission.WRITE_EXTERNAL_STORAGE"); + if (permission != PackageManager.PERMISSION_GRANTED) { + // ��������������������������������������������������������������� + ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/app/src/main/res/anim/progress.xml b/app/src/main/res/anim/progress.xml new file mode 100644 index 0000000..bdcc398 --- /dev/null +++ b/app/src/main/res/anim/progress.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <rotate + android:interpolator="@android:anim/linear_interpolator" + android:pivotX="50%" + android:pivotY="50%" + android:fromDegrees="0" + android:toDegrees="+360" + android:duration="1500" + android:startOffset="-1" + android:repeatMode="restart" + android:repeatCount="-1"/> +</set> \ No newline at end of file diff --git a/app/src/main/res/layout/ac_ble_search_layout.xml b/app/src/main/res/layout/ac_ble_search_layout.xml index eba5f42..dc5a497 100644 --- a/app/src/main/res/layout/ac_ble_search_layout.xml +++ b/app/src/main/res/layout/ac_ble_search_layout.xml @@ -16,18 +16,20 @@ android:padding="@dimen/x16"> <ImageView - android:id="@+id/iv_searchpic" - android:layout_width="@dimen/x140" - android:layout_height="@dimen/x140" - android:scaleType="centerCrop" - android:src="@mipmap/bg_start" /> - - <ImageView android:id="@+id/iv_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/x8" - android:src="@mipmap/bt_start" /> + android:layout_marginBottom="@dimen/x10" + android:src="@mipmap/bt_start" + android:visibility="visible" /> + + <ImageView + android:id="@+id/iv_searchpic" + android:layout_width="@dimen/x70" + android:layout_height="@dimen/x70" + android:scaleType="centerCrop" + android:src="@mipmap/bg_start" /> </LinearLayout> <LinearLayout @@ -35,74 +37,84 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/x10" - android:textColor="@color/dark_gray_txt" - android:text="@string/caozuo"/> + android:text="@string/caozuo" + android:textColor="@color/dark_gray_txt" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/x10" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="@dimen/x10" - android:drawablePadding="@dimen/x8" android:drawableLeft="@mipmap/icon1" - android:textColor="@color/dark_gray_txt" - android:text="@string/caozuo1"/> + android:drawablePadding="@dimen/x8" + android:padding="@dimen/x10" + android:text="@string/caozuo1" + android:textColor="@color/dark_gray_txt" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/x10" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="@dimen/x10" - android:drawablePadding="@dimen/x8" android:drawableLeft="@mipmap/icon2" - android:textColor="@color/dark_gray_txt" - android:text="@string/caozuo2"/> + android:drawablePadding="@dimen/x8" + android:padding="@dimen/x10" + android:text="@string/caozuo2" + android:textColor="@color/dark_gray_txt" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/x10" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="@dimen/x10" - android:drawablePadding="@dimen/x8" android:drawableLeft="@mipmap/icon3" - android:textColor="@color/dark_gray_txt" - android:text="@string/caozuo3"/> + android:drawablePadding="@dimen/x8" + android:padding="@dimen/x10" + android:text="@string/caozuo3" + android:textColor="@color/dark_gray_txt" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/x10" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="@dimen/x10" - android:drawablePadding="@dimen/x8" android:drawableLeft="@mipmap/icon4" - android:textColor="@color/dark_gray_txt" - android:text="@string/caozuo4"/> + android:drawablePadding="@dimen/x8" + android:padding="@dimen/x10" + android:text="@string/caozuo4" + android:textColor="@color/dark_gray_txt" /> + <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="@dimen/x10" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_ble" android:layout_width="match_parent" android:layout_height="wrap_content" - android:visibility="gone"/> + android:visibility="gone" /> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_monitor_layout.xml b/app/src/main/res/layout/fragment_monitor_layout.xml index ca35289..653352c 100644 --- a/app/src/main/res/layout/fragment_monitor_layout.xml +++ b/app/src/main/res/layout/fragment_monitor_layout.xml @@ -199,6 +199,17 @@ android:orientation="vertical"> <TextView + android:id="@+id/tv_text_mac" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="@dimen/x15" + android:background="@color/white" + android:gravity="center" + android:padding="@dimen/x15" + android:text="���������,���mac���" + android:textColor="#ae8082" /> + + <TextView android:id="@+id/tv_desc" android:layout_width="match_parent" android:layout_height="match_parent" @@ -209,6 +220,7 @@ android:text="���������������������������\n������������������������������������������������" android:textColor="#ae8082" /> + <ImageView android:id="@+id/iv_bottom_status" android:layout_width="@dimen/x30" diff --git a/app/src/main/res/layout/fragment_setting_layout.xml b/app/src/main/res/layout/fragment_setting_layout.xml index deb61da..65f653e 100644 --- a/app/src/main/res/layout/fragment_setting_layout.xml +++ b/app/src/main/res/layout/fragment_setting_layout.xml @@ -43,17 +43,19 @@ <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="������������" android:layout_alignParentRight="true" - android:textColor="@color/dark_gray_txt" android:drawableRight="@mipmap/icon_jiantou" android:drawablePadding="@dimen/x6" + android:text="������������" + android:textColor="@color/dark_gray_txt" android:textSize="16sp" /> </RelativeLayout> + <View android:layout_width="match_parent" android:layout_height="1dp" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -79,12 +81,14 @@ android:id="@+id/sc_open" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentRight="true"/> + android:layout_alignParentRight="true" /> </RelativeLayout> + <View android:layout_width="match_parent" android:layout_height="1dp" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <RelativeLayout android:id="@+id/rl_setvoice" android:layout_width="match_parent" @@ -103,33 +107,39 @@ android:layout_height="wrap_content" android:layout_marginLeft="@dimen/x10" android:layout_toRightOf="@+id/iv3" - android:text="������������" - android:textColor="@color/dark_gray_txt" android:drawableRight="@mipmap/icon_jiantou" + android:text="���������������������" + android:textColor="@color/dark_gray_txt" android:textSize="16sp" /> - <android.support.v7.widget.SwitchCompat + + <Button android:id="@+id/sc_male" android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginRight="@dimen/x20" - android:text="���" + android:layout_height="@dimen/x30" + android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:layout_alignParentRight="true"/> + android:layout_marginRight="@dimen/x20" + android:background="@drawable/choose_button" + android:stateListAnimator="@anim/progress" + android:textColor="@color/dark_gray_txt" + android:text="������" /> </RelativeLayout> + <View android:layout_width="match_parent" android:layout_height="1dp" - android:background="@color/gray_line"/> + android:background="@color/gray_line" /> + <Button android:id="@+id/bt_sure" android:layout_width="match_parent" android:layout_height="@dimen/x40" android:layout_marginLeft="@dimen/x40" - android:layout_marginRight="@dimen/x40" android:layout_marginTop="@dimen/x24" + android:layout_marginRight="@dimen/x40" android:background="@mipmap/bt_blue" - android:text="������������" android:gravity="center" + android:text="������������" android:textColor="@color/white" android:textSize="16sp" /> @@ -138,20 +148,21 @@ android:layout_width="match_parent" android:layout_height="@dimen/x40" android:layout_marginLeft="@dimen/x40" - android:layout_marginRight="@dimen/x40" android:layout_marginTop="@dimen/x24" + android:layout_marginRight="@dimen/x40" android:background="@mipmap/bt_blue" - android:text="������������" - android:visibility="gone" android:gravity="center" + android:text="������������" android:textColor="@color/white" - android:textSize="16sp" /> + android:textSize="16sp" + android:visibility="gone" /> + <TextView android:id="@+id/tv_version" android:layout_width="match_parent" android:layout_height="match_parent" - android:gravity="center_horizontal|bottom" android:layout_marginBottom="30dp" + android:gravity="center_horizontal|bottom" android:text="������������V1.0" android:textColor="@color/dark_gray_txt" android:textSize="18sp" /> diff --git a/app/src/main/res/mipmap-hdpi/tips.png b/app/src/main/res/mipmap-hdpi/tips.png new file mode 100644 index 0000000..477c90f --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/tips.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/tips.png b/app/src/main/res/mipmap-xxhdpi/tips.png new file mode 100644 index 0000000..477c90f --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/tips.png Binary files differ diff --git a/key.jks b/key.jks new file mode 100755 index 0000000..8190f75 --- /dev/null +++ b/key.jks Binary files differ -- Gitblit v1.8.0