Commit 512a5ef0 by onuma

コールバックを実行するまえに、mHandlerからコールバックを全削除していたのを修正。

parent 9e941eb7
...@@ -116,12 +116,15 @@ public class TR41BluetoothUtil { ...@@ -116,12 +116,15 @@ public class TR41BluetoothUtil {
/* /*
* CALLBACK_TYPE_ALL_MATCHES * CALLBACK_TYPE_ALL_MATCHES
* 検出されたすべてのBluetoothアドバタイズのコールバックをトリガーし、フィルター基準に一致します。 * 検出されたすべてのBluetoothアドバタイズのコールバックをトリガーし、フィルター基準に一致します。
* アクティブなフィルターがない場合、すべてのアドバタイズパケットが報告されます。 * アクティブなフィルターがない場合、すべてのアドバタイズパケットが報告されます。 
* ... 500msに1回ほどスキャンしている
* *
* MATCH_MODE_AGGRESSIVE * MATCH_MODE_AGGRESSIVE
* アグレッシブモードでは、信号強度が弱く、継続時間中に目撃/一致がほとんどない場合でも、 * アグレッシブモードでは、信号強度が弱く、継続時間中に目撃/一致がほとんどない場合でも、
* ハードウェアは一致をより早く判断します。 * ハードウェアは一致をより早く判断します。
* ... ALL_MATCHESよりも高速にスキャンしている。(遠くの弱い信号も受信している。遠くの弱い信号は必要ない)
*/ */
// 近くのTR41を検索するのであれば、ALL_MATCHESで問題ない。
mScanSettingBuiler.setMatchMode(CALLBACK_TYPE_ALL_MATCHES); mScanSettingBuiler.setMatchMode(CALLBACK_TYPE_ALL_MATCHES);
/* /*
...@@ -138,10 +141,10 @@ public class TR41BluetoothUtil { ...@@ -138,10 +141,10 @@ public class TR41BluetoothUtil {
mHandler.postDelayed( new Runnable() { mHandler.postDelayed( new Runnable() {
@Override @Override
public void run() { public void run() {
// SCAN_PERIOD 秒後に呼ばれた時にスキャン中であれば端末を取得できなかったとみなす。 // SCAN_PERIOD 秒後に呼ばれた時にスキャン中であれば端末を検索&取得できなかったとみなす。
if (mIsScaning) { if (mIsScaning) {
Sb_StopScan();
mListener.onScanFailed(-390831); mListener.onScanFailed(-390831);
Sb_StopScan();
Logger.d(TAG, "scan in 20 sec"); Logger.d(TAG, "scan in 20 sec");
} }
} }
...@@ -150,14 +153,20 @@ public class TR41BluetoothUtil { ...@@ -150,14 +153,20 @@ public class TR41BluetoothUtil {
mIsScaning = true; mIsScaning = true;
} }
/**
* スキャンを止める。mHandlerから全てのコールバックを削除しているので、
*
*/
public void Sb_StopScan() public void Sb_StopScan()
{ {
try { if (mIsScaning) {
mIsScaning = false; try {
mHandler.removeCallbacksAndMessages(null); mIsScaning = false;
mBluetoothLeScanner.stopScan(mScanCallback); mBluetoothLeScanner.stopScan(mScanCallback);
} catch (Exception e){ mHandler.removeCallbacksAndMessages(null);
Logger.e(TAG,e.toString()); } catch (Exception e) {
Logger.e(TAG, e.toString());
}
} }
} }
...@@ -175,7 +184,7 @@ public class TR41BluetoothUtil { ...@@ -175,7 +184,7 @@ public class TR41BluetoothUtil {
@Override @Override
public void onScanFailed(final int errorCode) { public void onScanFailed(final int errorCode) {
Logger.d(TAG, "onScanFailed"); Logger.d(TAG, "onScanFailed errorCode = " + errorCode);
runOnUiThread( new Runnable() { runOnUiThread( new Runnable() {
@Override @Override
public void run() { public void run() {
...@@ -186,6 +195,7 @@ public class TR41BluetoothUtil { ...@@ -186,6 +195,7 @@ public class TR41BluetoothUtil {
@Override @Override
public void onScanResult(int callbackType, ScanResult result) { public void onScanResult(int callbackType, ScanResult result) {
Logger.d(TAG, "onScanResult callbackType = " + callbackType);
if(!mIsScaning){ if(!mIsScaning){
Logger.d(TAG, "mIsScaning is false"); Logger.d(TAG, "mIsScaning is false");
return; return;
...@@ -211,13 +221,14 @@ public class TR41BluetoothUtil { ...@@ -211,13 +221,14 @@ public class TR41BluetoothUtil {
// 検索範囲を調整したい場合は、rssiの閾値を調整する( getRssiは、電波強度を返す。dBm マイナスが小さいほど電波が強い) // 検索範囲を調整したい場合は、rssiの閾値を調整する( getRssiは、電波強度を返す。dBm マイナスが小さいほど電波が強い)
//if(result.getRssi() < -50) //if(result.getRssi() < -50)
// return ; // return ;
Logger.d(TAG,"getRssi = " + result.getRssi()); Logger.d(TAG,"Rssi = " + result.getRssi());
rtn = Sb_Parse_ScanRecord(scanRecord, serial, localName, security, ch1Data, ch2Data, batLevel) ; rtn = Sb_Parse_ScanRecord(scanRecord, serial, localName, security, ch1Data, ch2Data, batLevel) ;
if(rtn == 0) { if(rtn == 0) {
final String serialStr = String.format("%X", (int)(serial[0])); final String serialStr = String.format("%X", (int)(serial[0]));
// 温度
final String ch1Str ; final String ch1Str ;
if(ch1Data[0] == 0xEEEE) { if(ch1Data[0] == 0xEEEE) {
//ch1Str = "----"; //ch1Str = "----";
...@@ -232,7 +243,6 @@ public class TR41BluetoothUtil { ...@@ -232,7 +243,6 @@ public class TR41BluetoothUtil {
runOnUiThread( new Runnable() { runOnUiThread( new Runnable() {
@Override @Override
public void run() { public void run() {
// 値が取得できたので、コールバックで通知
mListener.onScanResult(serialStr, ch1Str); mListener.onScanResult(serialStr, ch1Str);
} }
}); });
......
...@@ -244,7 +244,6 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -244,7 +244,6 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
errorAfterAbookCheckAip(String.format(getString(R.string.msg_bluetooth_connect_error), getString(R.string.radiation_thermometer))); errorAfterAbookCheckAip(String.format(getString(R.string.msg_bluetooth_connect_error), getString(R.string.radiation_thermometer)));
} }
} }
// onuma
bleManagerDisconnect(true); bleManagerDisconnect(true);
// ダイアログは消す // ダイアログは消す
dismissWaitngDialog(); dismissWaitngDialog();
...@@ -269,10 +268,8 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -269,10 +268,8 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
if (StringUtil.isNullOrEmpty(message)) { if (StringUtil.isNullOrEmpty(message)) {
// 接続するデバイスが存在しないと見做し、接続を切る // 接続するデバイスが存在しないと見做し、接続を切る
// onuma
bleManagerDisconnect(true); bleManagerDisconnect(true);
} else { } else {
// onuma
mIsConnection = true; mIsConnection = true;
mWaitingDialog.setMessage(message); mWaitingDialog.setMessage(message);
} }
...@@ -298,8 +295,7 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -298,8 +295,7 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
// 値取得待ちのダイアログ表示中のみ値を取得、設定する // 値取得待ちのダイアログ表示中のみ値を取得、設定する
if (mWaitingDialog != null) { if (mWaitingDialog != null) {
setThermometerData(strTemp); setThermometerData(strTemp);
// 取得できたら、ダイアログ消すだけ。 // 取得できたら、ダイアログ消すだけ。切断しない
// onuma 切断しない
bleManagerDisconnect(false); bleManagerDisconnect(false);
dismissWaitngDialog(); dismissWaitngDialog();
} }
...@@ -324,7 +320,6 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -324,7 +320,6 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
errorAfterAbookCheckAip(errorMessage); errorAfterAbookCheckAip(errorMessage);
} }
// bluetooth通信を切断 // bluetooth通信を切断
//onuma
bleManagerDisconnect(true); bleManagerDisconnect(true);
// ダイアログを閉じる // ダイアログを閉じる
...@@ -375,6 +370,7 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity { ...@@ -375,6 +370,7 @@ public class ABVCheckContentViewActivity extends ABVContentViewActivity {
Logger.d(TAG, "onScanResult mTR41SerialNo [%s]", mTR41SerialNo); Logger.d(TAG, "onScanResult mTR41SerialNo [%s]", mTR41SerialNo);
Logger.d(TAG,"-------------------------------------------------"); Logger.d(TAG,"-------------------------------------------------");
if (!serialNo.equals(mTR41SerialNo)){ if (!serialNo.equals(mTR41SerialNo)){
// 検索対象のシリアル番号と違う
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment