Commit 669286a2 by Kim Jinsung

Merge branch 'contract/sato/1.0.0_32917' into contract/sato/1.0.0

# Conflicts:
#	ABVJE_Res_Default_Android/res/values-ja/strings.xml
#	ABVJE_Res_Default_Android/res/values-ko/strings.xml
#	ABVJE_Res_Default_Android/res/values/strings.xml
#	ABVJE_UI_Android/src/jp/agentec/abook/abv/ui/common/activity/ABVContentViewActivity.java
parents f84f136a fa78d283
......@@ -1397,11 +1397,14 @@
<string name="thermometer">芯温計</string>
<string name="ble_is_not_supported">BLEを支援しません。</string>
<string name="bluetooth_is_not_supported">ブルートゥースを支援しません。</string>
<string name="bluetooth_is_not_working">ブルートゥースが機能しません</string>
<string name="bluetooth_is_not_working">ブルートゥース機能がオンになっているか確認してください</string>
<string name="msg_connected_bluetooth">%sに接続されました。</string>
<string name="msg_ble_not_connect">接続が停止しました。</string>
<string name="msg_ble_connect_error">%sと接続されていません。\n%sと接続状態を設定画面の機器連携から確認してください。</string>
<string name="msg_permission_dialog_bluetooth">ブルートゥース利用権限が必要です。\nアプリ設定画面へ遷移します。</string>
<string name="sensor">センサー</string>
<string name="barcode">バーコード</string>
<string name="msg_device_search">ディバイスを検索中</string>
<string name="msg_device_connecting">ディバイスと接続中</string>
<string name="msg_no_device_info">登録された機器情報がありません。\n設定画面の機器連携から確認してください。</string>
</resources>
......@@ -1411,4 +1411,7 @@
<string name="msg_permission_dialog_bluetooth">블루투스이용권한이 필요합니다.\n설정화면으로 이동합니다.</string>
<string name="sensor">센서</string>
<string name="barcode">바코드</string>
<string name="msg_device_search">기기를 검색중\</string>
<string name="msg_device_connecting">기기와 접속중</string>
<string name="msg_no_device_info">등록된 기기정보가 없습니다.\n설정화면의 기기연결에서 확인해주세요.</string>
</resources>
\ No newline at end of file
......@@ -1406,8 +1406,11 @@
<string name="bluetooth_is_not_working">Bluetooth is not working.</string>
<string name="msg_connected_bluetooth">Connected to %s</string>
<string name="msg_ble_not_connect">The connection has stopped.</string>
<string name="msg_ble_connect_error">Not connected with% %s. \nCheck %s and connection status from the device linkage on the setting screen.</string>
<string name="msg_ble_connect_error">Not connected with %s. \nCheck %s and connection status from the device linkage on the setting screen.</string>
<string name="msg_permission_dialog_bluetooth">You need Bluetooth access authority. \nIt changes to the application setting.</string>
<string name="sensor">Sensor</string>
<string name="barcode">Barcode</string>
<string name="msg_device_search">Searching Device</string>
<string name="msg_device_connecting">Connecting Device</string>
<string name="msg_no_device_info">There is no registered device information. \nPlease confirm from the device cooperation of the setting screen.</string>
</resources>
\ No newline at end of file
......@@ -21,15 +21,14 @@
android:layout_height="50dp">
<TextView
android:id="@+id/tv_toolbar_title"
android:id="@+id/device_toolbar_title"
style="@style/DialogToolBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/set_pairing"
android:textColor="@color/edt_text"
android:textSize="@dimen/opeartion_title_text_size" />
android:textSize="20sp" />
<ImageButton
android:id="@+id/close_btn"
......@@ -40,32 +39,6 @@
android:background="@drawable/ic_operation_close"
android:onClick="onClickCloseView" />
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_weight="1"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/toolbar2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:visibility="visible">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:gravity="left"
android:text="@string/thermometer"
android:textSize="20sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
......@@ -74,26 +47,26 @@
android:layout_centerVertical="true">
<Button
android:id="@+id/scan_button"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:text="@string/scan" />
<Button
android:id="@+id/stop_button"
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_reload"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:text="@string/stop" />
android:background="@drawable/ic_reload_list" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_weight="1"
android:orientation="vertical">
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
......
......@@ -18,8 +18,12 @@ import android.bluetooth.BluetoothGattService;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;
import static android.bluetooth.BluetoothDevice.TRANSPORT_LE;
import static org.chromium.base.ThreadUtils.runOnUiThread;
public class BleManagerUtil {
......@@ -53,6 +57,7 @@ public class BleManagerUtil {
// 接続状態変更(connectGatt()の結果として呼ばれる。)
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState ) {
super.onConnectionStateChange(gatt, status, newState);
// if( BluetoothGatt.GATT_SUCCESS != status ) {
// runOnUiThread( new Runnable() {
// public void run() {
......@@ -61,6 +66,17 @@ public class BleManagerUtil {
// });
// return;
// }
Logger.d("GATT_ message : [ " + status);
// ディバイスと接続されていない場合のメッセージコード:133, 62
// ディバイスと接続が切れた場合のメッセージコード:19
if (status == 133 || status == 62) { // 接続失敗
runOnUiThread( new Runnable() {
public void run() {
listener.onConnectionError();
}
});
return;
}
if( status == BluetoothGatt.GATT_SUCCESS && BluetoothProfile.STATE_CONNECTED == newState ) {
// 接続完了
......@@ -81,17 +97,19 @@ public class BleManagerUtil {
}
if( BluetoothProfile.STATE_DISCONNECTED == newState ) { // 切断完了(接続可能範囲から外れて切断された)
// 接続可能範囲に入ったら自動接続するために、mBluetoothGatt.connect()を呼び出す。
mBluetoothGatt.connect();
// 接続可能範囲に入ったら自動接続することが必要場合、mBluetoothGatt.connect()を呼び出す。
// mBluetoothGatt.connect();
// 切断が発生する場合、Bluetoothと接続を切断する。
disconnect();
runOnUiThread( new Runnable() {
public void run() {
// 切断トーストメッセージを表示する。
listener.onDisConnectionState();
// listener.onDisConnectionState();
}
} );
return;
}
super.onConnectionStateChange(gatt, status, newState);
}
// サービス検索が完了したときの処理(mBluetoothGatt.discoverServices()の結果として呼ばれる。)
......@@ -195,6 +213,7 @@ public class BleManagerUtil {
void onGetDeviceInfoFailed(); // ディバイスと接続失敗時の情報渡す。
void onConnectionState(); // ディバイスと接続された時情報渡す。
void onDisConnectionState(); // ディバイスと切断時
void onConnectionError(); // ディバイス接続エラー
}
// 接続
......@@ -209,9 +228,16 @@ public class BleManagerUtil {
// mBluetoothGattのサービスと接続
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice( mDeviceAddress );
// GATT BLEを利用する時Androidのバージョン「23」をチェックしてGATTと接続する。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mBluetoothGatt = device.connectGatt( context, false, mGattcallback, TRANSPORT_LE);
} else {
mBluetoothGatt = device.connectGatt( context, false, mGattcallback );
}
}
// 切断
public void disconnect() {
if( null == mBluetoothGatt ) {
......@@ -273,20 +299,10 @@ public class BleManagerUtil {
// Bluetoothアダプタの取得処理
public void startDeviceInfo() {
// disconnect();
// bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
// // Android端末がBLEをサポートしてるかの確認
// if( !context.getPackageManager().hasSystemFeature( PackageManager.FEATURE_BLUETOOTH_LE ) ) {
// Toast.makeText( context, R.string.ble_is_not_supported, Toast.LENGTH_SHORT ).show();
// return;
// }
// Bluetoothアダプタの取得
BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService( Context.BLUETOOTH_SERVICE );
mBluetoothAdapter = bluetoothManager.getAdapter();
if( null == mBluetoothAdapter )
{ // Android端末がBluetoothをサポートしていない
if( null == mBluetoothAdapter ) { // Android端末がBluetoothをサポートしていない
Toast.makeText( context, R.string.bluetooth_is_not_supported, Toast.LENGTH_SHORT ).show();
return;
}
......
......@@ -2,26 +2,17 @@ package jp.agentec.abook.abv.ui.common.activity;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattDescriptor;
import android.bluetooth.BluetoothGattService;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.location.Location;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.util.Pair;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
......@@ -40,17 +31,13 @@ import org.json.adf.JSONObject;
import java.io.File;
import java.io.FileNotFoundException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import jp.agentec.abook.abv.bl.acms.client.json.content.ContentJSON;
import jp.agentec.abook.abv.bl.acms.type.OperationType;
import jp.agentec.abook.abv.bl.common.ABVEnvironment;
import jp.agentec.abook.abv.bl.common.Callback;
......@@ -92,7 +79,6 @@ import jp.agentec.abook.abv.ui.home.helper.ABookCheckWebViewHelper;
import jp.agentec.abook.abv.ui.home.helper.ABookPermissionHelper;
import jp.agentec.abook.abv.ui.home.helper.ActivityHandlingHelper;
import jp.agentec.abook.abv.ui.viewer.activity.CheckOZDViewActivity;
import jp.agentec.abook.abv.ui.viewer.activity.HTMLWebViewActivity;
import jp.agentec.abook.abv.ui.viewer.activity.HTMLXWalkWebViewActivity;
import jp.agentec.abook.abv.ui.viewer.activity.NoPdfViewActivity;
import jp.agentec.abook.abv.ui.viewer.foxitPdf.FoxitPdfCore;
......@@ -238,7 +224,23 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
// get Device info
bleManagerUtil = new BleManagerUtil(this, new BleManagerUtil.BleManagerUtilListener() {
@Override
public void onConnectionError() {
Logger.d(TAG, "onDisConnectionState");
putUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
ABookAlertDialog alert = AlertDialogUtil.createAlertDialog(ABVContentViewActivity.this, R.string.thermometer);
alert.setMessage(String.format(getString(R.string.msg_ble_connect_error), getString(R.string.thermometer), getString(R.string.thermometer)));
alert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setThermometerData("");
}
});
alert.show();
}
@Override
public void onConnectionState() { // 接続
Logger.d(TAG, "onDisConnectionState");
putUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 1);
ABVToastUtil.showMakeText(getApplicationContext(),
String.format(getString(R.string.msg_connected_bluetooth), getString(R.string.thermometer)),
......@@ -247,12 +249,14 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
@Override
public void onDisConnectionState() { // 切断
Logger.d(TAG, "onDisConnectionState");
putUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
ABVToastUtil.showMakeText(getApplicationContext(), getString(R.string.msg_ble_not_connect), Toast.LENGTH_SHORT);
}
@Override
public void onGetDeviceInfo(String strTemp) { // 機器のデータ
Logger.d(TAG, "onDisConnectionState");
Toast.makeText( getApplicationContext(), strTemp, Toast.LENGTH_SHORT ).show();
Logger.d(TAG, "get temperature [%s]", strTemp);
setThermometerData(strTemp);
......@@ -260,10 +264,16 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
@Override
public void onGetDeviceInfoFailed() { // 機器のエラー
Logger.d(TAG, "onDisConnectionState");
putUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
ABookAlertDialog alert = AlertDialogUtil.createAlertDialog(ABVContentViewActivity.this, R.string.thermometer);
alert.setMessage(String.format(getString(R.string.msg_ble_connect_error), getString(R.string.thermometer), getString(R.string.thermometer)));
alert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok), (DialogInterface.OnClickListener) null);
alert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setThermometerData("");
}
});
alert.show();
}
});
......@@ -371,9 +381,10 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
// 接続されている機器と切断する。
if( null != bleManagerUtil.mBluetoothGatt )
{
bleManagerUtil.mBluetoothGatt.close();
bleManagerUtil.mBluetoothGatt = null;
putUserPref(AppDefType.UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
bleManagerUtil.mBluetoothGatt.disconnect();
}
putUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
}
}
......@@ -1151,12 +1162,11 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
mQid = abookCheckParam.get(ABookKeys.TASK_QUESTION_ID); // 設問ID取得
// 1:芯温系 2:置くだけセンサー 3:バーコード
// if (device_type == Constant.DeviceType.thermomete) { // 芯温系
// setThermometerDeviceInfo((Integer.valueOf(abookCheckParam.get(ABookKeys.TASK_DEVICE_TYPE)) == Constant.DeviceType.thermomete));
// } else if (device_type == Constant.DeviceType.sensor) { // 置くだけセンサー
// ErrorMessage.showErrorMessageToast(getApplicationContext(), "Not ready !!!!"); // set Error Message
// } else
if (device_type == Constant.DeviceType.barcode) { // バーコード
if (device_type == Constant.DeviceType.thermomete) { // 芯温系
setThermometerDeviceInfo((Integer.valueOf(abookCheckParam.get(ABookKeys.TASK_DEVICE_TYPE)) == Constant.DeviceType.thermomete));
} else if (device_type == Constant.DeviceType.sensor) { // 置くだけセンサー
ErrorMessage.showErrorMessageToast(getApplicationContext(), "Not ready !!!!"); // set Error Message
} else if (device_type == Constant.DeviceType.barcode) { // バーコード
setBarcodeDeviceInfo();
} else {
ErrorMessage.showErrorMessageToast(getApplicationContext(), "Device is not working"); // set Error Message
......@@ -1405,7 +1415,6 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
/**
* ディバイスのバーコードの情報取得
*
*/
protected void setBarcodeDeviceInfo() {
//カメラパーミッションチェック
......@@ -1418,73 +1427,83 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
startActivityForResult( barcodeactivityIntent, REQUEST_BARCODE_READER );
}
// /**
// * BLEディバイスの芯温系の情報取得
// * @param showPermissionDialogFlg
// */
// protected void setThermometerDeviceInfo(final boolean showPermissionDialogFlg) {
// ABookPermissionHelper helper = new ABookPermissionHelper(this, Constant.ABookPermissionType.Bluetooth, null);
// if (helper.checkMultiPermissions(showPermissionDialogFlg)) {
// if (getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "").length() > 0) {
// String strDeviceName = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_NAME, "");
// // ローカルに保存されている場合保存されているディバイス情報を読み込んで処理する。
// bleManagerUtil.mDeviceAddress = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "");
// int deviceUsed = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
// // 取得したデバイスリストアクティビティからの情報をローカルに保存
// setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, deviceUsed);
//
// // Android端末のBluetooth機能の有効化要求
// requestBluetoothFeature();
//
// // 接続
// bleManagerUtil.connect();
// } else {
/**
* BLEディバイスの芯温系の情報取得
* @param showPermissionDialogFlg
*/
protected void setThermometerDeviceInfo(final boolean showPermissionDialogFlg) {
ABookPermissionHelper helper = new ABookPermissionHelper(this, Constant.ABookPermissionType.Bluetooth, null);
if (helper.checkMultiPermissions(showPermissionDialogFlg)) {
if (getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "").length() > 0) {
String strDeviceName = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_NAME, "");
// ローカルに保存されている場合保存されているディバイス情報を読み込んで処理する。
bleManagerUtil.mDeviceAddress = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "");
int deviceUsed = getUserPref(UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
// 取得したデバイスリストアクティビティからの情報をローカルに保存
setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, deviceUsed);
// Android端末のBluetooth機能の有効化要求
requestBluetoothFeature();
// 接続
bleManagerUtil.connect();
} else {
// 設定画面に遷移すること
// setPairingSetting(); // 接続するのために機器設定画面に遷移する。
// }
// } else {
// Logger.w(TAG,"onGetDeviceInfoFailed Connect BLE Device false");
// // リソースパターンの適用
// afterABookCheckApi(mCmd, "", 1, PatternStringUtil.patternToString(getApplicationContext(),
// R.string.msg_location_search_fail,
// getUserPref(AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0)), null);
// }
// }
//
// // Android端末のBluetooth機能の有効化要求
// public void requestBluetoothFeature() {
// if( bleManagerUtil.mBluetoothAdapter.isEnabled() ) {
// return;
// }
// // デバイスのBluetooth機能が有効になっていないときは、有効化要求(ダイアログ表示)
// Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE );
// startActivityForResult( enableBtIntent, REQUEST_ENABLEBLUETOOTH );
// }
// ディバイス情報がない場合
ABookAlertDialog alert = AlertDialogUtil.createAlertDialog(ABVContentViewActivity.this, R.string.thermometer);
alert.setMessage(getString(R.string.msg_no_device_info));
alert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setThermometerData("");
}
});
}
} else {
Logger.w(TAG,"onGetDeviceInfoFailed Connect BLE Device false");
// リソースパターンの適用
afterABookCheckApi(mCmd, "", 1, PatternStringUtil.patternToString(getApplicationContext(),
R.string.msg_location_search_fail,
getUserPref(AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0)), null);
}
}
// Android端末のBluetooth機能の有効化要求
public void requestBluetoothFeature() {
if( bleManagerUtil.mBluetoothAdapter.isEnabled() ) {
return;
}
// デバイスのBluetooth機能が有効になっていないときは、有効化要求(ダイアログ表示)
Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE );
startActivityForResult( enableBtIntent, REQUEST_ENABLEBLUETOOTH );
}
// 機能の有効化Activityの操作結果
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data ) {
switch( requestCode ) {
// case REQUEST_ENABLEBLUETOOTH: // Bluetooth有効化要求
// if( Activity.RESULT_CANCELED == resultCode ) { // 有効にされなかった
// ABVToastUtil.showMakeText(getApplicationContext(), getString(R.string.bluetooth_is_not_working), Toast.LENGTH_SHORT);
// return;
// }
// break;
// case REQUEST_CONNECTDEVICE: // デバイス接続要求
// String strDeviceName;
// if( Activity.RESULT_OK == resultCode ) {
// // デバイスリストアクティビティからの情報の取得
// bleManagerUtil.mDeviceAddress = mDeviceAddress;
// strDeviceName = data.getStringExtra( PairingSettingActivity.EXTRAS_DEVICE_NAME );
// bleManagerUtil.mDeviceAddress = data.getStringExtra( PairingSettingActivity.EXTRAS_DEVICE_ADDRESS );
// // 取得したデバイスリストアクティビティからの情報をローカルに保存
// setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, 1);
// } else {
// strDeviceName = "";
// bleManagerUtil.mDeviceAddress = "";
// setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, 0);
// }
// break;
case REQUEST_ENABLEBLUETOOTH: // Bluetooth有効化要求
if( Activity.RESULT_CANCELED == resultCode ) { // 有効にされなかった
ABVToastUtil.showMakeText(getApplicationContext(), getString(R.string.bluetooth_is_not_working), Toast.LENGTH_SHORT);
return;
}
break;
case REQUEST_CONNECTDEVICE: // デバイス接続要求
String strDeviceName;
if( Activity.RESULT_OK == resultCode ) {
// デバイスリストアクティビティからの情報の取得
bleManagerUtil.mDeviceAddress = mDeviceAddress;
strDeviceName = data.getStringExtra( PairingSettingActivity.EXTRAS_DEVICE_NAME );
bleManagerUtil.mDeviceAddress = data.getStringExtra( PairingSettingActivity.EXTRAS_DEVICE_ADDRESS );
// 取得したデバイスリストアクティビティからの情報をローカルに保存
setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, 1);
} else {
strDeviceName = "";
bleManagerUtil.mDeviceAddress = "";
setUserPref(strDeviceName, bleManagerUtil.mDeviceAddress, 0);
}
break;
case REQUEST_BARCODE_READER: // バーコードの要求
setBarCodeData(data.getStringExtra(BarCodeReaderActivity.BARCODE_READING_DATA)); // バーコードの読み取りデータ
break;
......
......@@ -74,8 +74,8 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
@Override
public void run() {
BluetoothDevice device = result.getDevice();
// if(device.getName() != null && device.getName().startsWith("MF500B")) {
// 識別商品名に絞る
if(device.getName() != null && device.getName().startsWith("MF500")) {
Map<String, String> map = new HashMap<String, String>();
map.put(EXTRAS_DEVICE_NAME, device.getName());
map.put(EXTRAS_DEVICE_ADDRESS, device.getAddress());
......@@ -85,6 +85,7 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
mBleListAdapter.addDevice(map);
}
}
}
} );
}
......@@ -101,6 +102,9 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
super.onCreate(savedInstanceState);
setContentView(R.layout.pairing_setting);
TextView deviceTitle = (TextView) findViewById(R.id.device_toolbar_title);
deviceTitle.setText(R.string.thermometer);
// 戻り値の初期化
setResult( Activity.RESULT_CANCELED );
......@@ -144,7 +148,15 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
// Bluetoothと接続処理する
bleManagerUtil = new BleManagerUtil(this, new BleManagerUtil.BleManagerUtilListener() {
@Override
public void onConnectionError() {
Logger.d(TAG, "onConnectionError");
closeProgressPopup();
}
@Override
public void onConnectionState() { // 接続
Logger.d(TAG, "onConnectionState");
closeProgressPopup();
Map<String, String> map = new HashMap<String, String>();
map.put(EXTRAS_DEVICE_NAME, bleManagerUtil.mDeviceName);
map.put(EXTRAS_DEVICE_ADDRESS, bleManagerUtil.mDeviceAddress);
......@@ -159,6 +171,8 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
@Override
public void onDisConnectionState() { // 切断
Logger.d(TAG, "onDisConnectionState");
closeProgressPopup();
// mDeviceListAdapter.notifyDataSetChanged();
Map<String, String> map = new HashMap<String, String>();
map.put(EXTRAS_DEVICE_NAME, bleManagerUtil.mDeviceName);
......@@ -176,20 +190,23 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
@Override
public void onGetDeviceInfo(String strTemp) { // 機器のデータ
Logger.d(TAG, "onGetDeviceInfo");
closeProgressPopup();
// Toast.makeText( getApplicationContext(), R.string.msg_connected_bluetooth, Toast.LENGTH_SHORT ).show();
Logger.d(TAG, "get temperature [%s]", strTemp);
}
@Override
public void onGetDeviceInfoFailed() { // 機器のエラー
Logger.d(TAG, "onGetDeviceInfoFailed");
closeProgressPopup();
showConfirmAlert( R.string.thermometer, String.format(getString(R.string.msg_ble_connect_error), getString(R.string.thermometer), getString(R.string.thermometer)));
}
});
bleManagerUtil.startDeviceInfo();
// Scan Button
mButton_Scan = (Button)findViewById( R.id.scan_button );
// Reload Button
mButton_Scan = (Button)findViewById( R.id.btn_reload );
mButton_Scan.setAllCaps(false);
mButton_Scan.setOnClickListener(new View.OnClickListener() {
@Override
......@@ -198,19 +215,6 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
}
});
// Stop Button
mButton_Stop = (Button)findViewById( R.id.stop_button );
mButton_Stop.setAllCaps(false);
mButton_Stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopScan();
}
});
// 設定画面が表示する場合、スキャンボタンが見えないように
mButton_Stop.setVisibility(View.GONE);
// 保存されているディバイスの情報がある場合、リストに表示する。
if (getUserPref(AppDefType.UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "").length() > 0) {
Map<String, String> getUserDataMap = new HashMap<String, String>();
......@@ -233,9 +237,12 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
// デバイスのBluetooth機能の有効化要求
requestBluetoothFeature();
// ローカルに保存されているディバイスの情報がない場合処理を行う
if (getUserPref(AppDefType.UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_ADDRESS, "").length() == 0) {
// スキャン開始
startScan();
}
}
// 別のアクティビティ(か別のアプリ)に移行したことで、バックグラウンドに追いやられた時
@Override
......@@ -252,8 +259,7 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
// Gattサービスがある場合、切断するためnullにする。
if( null != bleManagerUtil.mBluetoothGatt ) {
bleManagerUtil.mBluetoothGatt.close();
bleManagerUtil.mBluetoothGatt = null;
bleManagerUtil.mBluetoothGatt.disconnect();
putUserPref(AppDefType.UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0);
}
}
......@@ -296,6 +302,7 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
return;
}
showProgressPopup(getRString(R.string.msg_device_search));
// スキャン開始(一定時間後にスキャン停止する)
mHandler.postDelayed( new Runnable() {
@Override
......@@ -303,19 +310,14 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
mScanning = false;
scanner.stopScan( mLeScanCallback );
// ボタンの更新
mButton_Scan.setVisibility(View.VISIBLE);
mButton_Stop.setVisibility(View.GONE);
Logger.d(TAG, "scan in 10 sec");
closeProgressPopup();
}
}, SCAN_PERIOD );
mScanning = true;
scanner.startScan( mLeScanCallback );
// ボタンの更新
mButton_Scan.setVisibility(View.GONE);
mButton_Stop.setVisibility(View.VISIBLE);
Logger.d(TAG, "start scan !!");
}
......@@ -333,9 +335,6 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
mScanning = false;
scanner.stopScan( mLeScanCallback );
// ボタンの更新
mButton_Scan.setVisibility(View.VISIBLE);
mButton_Stop.setVisibility(View.GONE);
Logger.d(TAG, "stop scan !!");
}
......@@ -372,10 +371,23 @@ public class PairingSettingActivity extends ABVUIActivity implements AdapterView
} else {
bleManagerUtil.mDeviceAddress = deviceAddress;
bleManagerUtil.mDeviceName = deviceName;
showProgressPopup(getString(R.string.msg_device_connecting));
// デバイスのBluetooth機能の有効化要求
requestBluetoothFeature();
// 接続
bleManagerUtil.connect();
}
}
protected boolean testcheck() {
if (getUserPref(AppDefType.UserPrefKey.BLUETOOTH_DEVICE_TEMPERATURE_CONNECTED, 0) == 1) {
return true;
}
return false;
}
// 閉じるボタンの処理
public void onClickCloseView(View v) {
finish();
......
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