アンドロイド 12 ブルートゥース権限のアップデート

2月 14, 2023 by Long Pan | DEV COMMUNITY UPDATES

android-companion-blog

アマゾン翻訳による翻訳

ご存知かもしれませんが、GoogleはAndroid 12以降のOS向けにアプリを更新するよう開発者に働きかけています。多くの変更点の中には、Bluetoothの権限変更のセットがありました。Android 11 以前のバージョンで必要な単一の Bluetooth 権限が変更されました デバイスの検出、広告、接続を個別にカバーする 3 種類の Bluetooth 権限に Opens New Window。また、アプリのアップデートがAPI 3.1を対象としている場合 以上の場合、Bluetooth の権限は自動的に更新されません。更新されたアプリには、ユーザーの明示的な承認が必要です。

Android 12 をサポートするために Socket Mobile Companion アプリと CaptureSDK を更新する準備をしている最中に、この移行によりデバイス接続の問題が発生し、エンドユーザーのワークフローが中断される可能性があることに気付きました。これらの中断をできるだけ避けるには エンドユーザーが移行をスムーズに行えるように、可能な限り追加の変更を行っています。

  • まず、ユーザーがCompanionアプリを更新したときに、Bluetoothの許可を求めるメッセージが表示されるようにしたいと考えています。また、Companion アプリは、Companion サービスを開始する起動時に緊急通知を送信します。しかし、 ユーザーがスキャナーをすでに接続して使用している場合、Companion アプリに再度アクセスすることはできず、スキャナーの接続が中断される可能性があります。これは、Companion アプリを自動更新に設定している場合に特に当てはまります。
  • この問題を回避するには、現在行われているSDKの変更を活用するために、アプリを更新する際にも積極的に行動することを強くお勧めします。

コンパニオンアプリを通じて提供されるキャプチャサービスは、必要な Bluetooth 権限がないことを検出し、エラー (新しいエラーコード ESKT_BLUETOOTHPERMISSIONMISSING) を返します。アプリはこのエラーを適切に処理してプロンプトを表示するはずです Companion アプリで許可を与えるユーザー。アプリでは、Capture を起動する前に Bluetooth の権限ステータスを確認することもできます。コードスニペットは次のとおりです。


if (captureError.getCode() == CaptureError.ESKT_BLUETOOTHPERMISSIONMISSING) {
	Intent intent = new Intent();
	intent.putExtra(EXTRA_ERROR_CODE, CaptureError.ESKT_BLUETOOTHPERMISSIONMISSING);
	intent.setClassName("com.socketmobile.companion", "com.socketmobile.companion.GetPermission");
	permissionActivityResultLauncher.launch(intent);
}
//Start activity result 
ActivityResultLauncher < Intent > permissionActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback < ActivityResult > () {
	@Override
	public void onActivityResult(ActivityResult result) {
		if (result.getResultCode() == Activity.RESULT_OK) {
			Intent data = result.getData();
			int permissionResult = data.getIntExtra(Permissions.EXTRA_GRANT_RESULT, PackageManager.PERMISSION_DENIED);
			switch (permissionResult) {
				case PackageManager.PERMISSION_GRANTED:
					// Continue using the Capture SDK to scan barcodes 
					break;
				case PackageManager.PERMISSION_DENIED:
					// Notify user that permission is required to use bluetooth scanner 
					break;
			}
		}
	}
});
    

更新されたコンパニオンとSDKは、3月中旬頃にリリースされる予定です。リクエストに応じて、テスト用のベータ版を用意しています。ご不明な点やご質問がある場合は、 通常のデベロッパーサポートメールまたはフィードバックフォームからお問い合わせください