【問題描述】
CtsVerifier-Bluetooth-LE-SEcure-ClientServer-Test測驗pass但是無法選擇Pass-Button
工具版本:9.0-r11
其他資訊:
上個版本正常,verifier版本相同
分析程序中結合代碼咨詢測驗,印證只有Client無法選中,Server正常
【問題結論】
藍牙驅動修改引入,已定位回退,需要bsp進一步修改
verifier的該項測驗流程:
Client測驗pass后做出先關閉mAdapter.disable()后打開mAdapter.enable()的動作,
經梳理藍牙框流程發現,藍牙關閉后再次打開超時失敗,由此導致verifier的該項測驗Activity無法收到廣播將按鈕設定為可選enable
AuthBlog:秋城https://www.cnblogs.com/houser0323
【分析詳細】
Bluetooth-LE-SEcure-ClientServer-Test
流程概述
1.啟動BleSecureClientStartActivity
該測驗頁面只是一個activity-ui,主要的方法實作和流程動作都在父類Activity中,重點關注父類,
2.呼叫父類BleClientTestBaseActivity的onCreate()完成:
頁面顯示
設定底部pass-fail-button按鍵的監聽
設定pass-button為disable不可選
初始化頁面的測驗項ListView
回到子類繼續onCreate():
顯示info提示資訊的dialog
啟動BleClientService準備測驗
3.呼叫父類BleClientTestBaseActivity的onResume():
注冊測驗服務BleClientService的廣播監聽BroadcastReceiver mBroadcast
4.開始測驗
這個測驗是倆設備Server-Client配對測驗,自動觸發,細節略,和Server端之間的藍牙通信有關
listview每一條測驗結束都會有廣播發出,接收廣播后將mPassed做或運算,如果一切順利mPassed的運算結果是PASS_FLAG_ALL
這代表測驗項全部通過
private static final int PASS_FLAG_ALL = 0x3FFFF;
然后Client端將藍牙關閉mAdapter.disable()再打開mAdapter.enable(),打開成功情況下Activity才會將Pass-Button設定為可選擇
由于驅動代碼出問題,遂enable()失敗,無法設定按鈕可選
測驗代碼
1.測驗Activity,提供ui無業務代碼
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientStartActivity.java
2.上面(1)的父類,測驗結果處理
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestBaseActivity.java
3.測驗Service,真正的測驗項執行
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java
關鍵日志
測驗All-PASS
04-21 16:52:05.901 D/BluetoothGatt( 6338): onClientConnectionState() - status=0 clientIf=6 device=7B:D0:42:AC:47:B6
04-21 16:52:05.901 D/BleClientService( 6338): onConnectionStateChange: status= 0, newState= 0
04-21 16:52:05.901 D/BluetoothGatt( 6338): close()
04-21 16:52:05.901 D/BluetoothGatt( 6338): unregisterApp() - mClientIf=6
04-21 16:52:05.915 D/BleClientTestBase( 6338): Processing com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISCONNECTED
04-21 16:52:05.921 D/BleClientTestBase( 6338): Passed Flags has changed from 0x0003FDFF to 0x0003FFFF. Delta=0x00000200
04-21 16:52:05.921 D/BleClientTestBase( 6338): All Tests Passed.
藍牙正常關閉
04-21 16:52:06.931 D/AdapterProperties( 3406): Setting state to TURNING_OFF
04-21 16:52:07.038 I/AdapterState( 3406): BLE_TURNING_OFF : entered
04-21 16:52:07.057 I/bt_btif_core( 3406): btif_disable_bluetooth finished
藍牙開啟超時
04-21 16:52:17.051 D/BluetoothManagerService( 3297): enable(com.android.cts.verifier): mBluetooth =null mBinding = false mState = OFF
04-21 16:52:17.288 D/BluetoothAdapterService( 7058): bleOnProcessStart()
04-21 16:52:17.290 D/BluetoothManagerService( 3297): MESSAGE_BLUETOOTH_STATE_CHANGE: OFF > BLE_TURNING_ON
04-21 16:52:17.290 D/BluetoothManagerService( 3297): Sending BLE State Change: OFF > BLE_TURNING_ON
......
04-21 16:52:21.292 E/AdapterState( 7058): BLE_TURNING_ON : BLE_START_TIMEOUT
04-21 16:52:21.293 I/AdapterState( 7058): BLE_TURNING_OFF : entered
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/5563.html
標籤:Android
