0

Androidデバイス名を取得したい(つまり、ユーザーが設定で変更でき、「設定>デバイスについて>デバイス名」で見つけることができる「名前」)。

他の開発者は、Bluetooth 経由でこの名前を取得することを推奨しています。

しかし、私のデバイス (Samsung Galaxy S4) では、この名前は Bluetooth を有効にしたときにのみ更新されるため、Bluetooth が無効になっているときに名前を変更すると、Bluetooth を有効にするまで新しい名前は表示されません。

Bluetoothを有効にせずに更新されたデバイス名を取得する方法があるかどうか疑問に思っていますか? 次のような回避策を考えることができます:

  • ブルートゥースを有効にする
  • 名前を取得
  • ブルートゥースを無効にする

しかし、よりエレガントなソリューションが存在するかどうか疑問に思っていました。

4

1 に答える 1

-1

あなたが話しているデバイス名は、Bluetooth フレンドリ名としても知られているためBluetooth APIを介して読み取ることは完全に有効です。

アプリがBluetooth 以外のデバイスで実行されている場合、この名前は存在しないことに注意してください。

bluetooth APIのドキュメントを注意深く読むと、次のsetName(...)メソッドが表示されます。

... Bluetooth の状態が STATE_ON でない場合、この API は false を返します。Bluetooth をオンにした後、STATE_ON で ACTION_STATE_CHANGED を待って、更新された値を取得します。

つまり、この動作はデバイスに固有のものではありませんが、仕様どおりに機能します。

あなたの回避策は、Bluetoothが無効になっているときに名前が変更されたときに更新された名前を取得する唯一の方法です(残念ながら、BTの有効化/無効化にはコストがかかります)。

更新された値を取得するには、STATE_ON を指定した ACTION_STATE_CHANGED を待つ必要があることにも注意してください。

于 2016-04-04T09:06:01.283 に答える