Bluetoothで通信を行う(1)
|AndroidではBluetoothを利用して通信を行うことが可能です。
Bluetoothを利用して端末間で通信を行うまでには、いくつかの手順を踏む必要があります。
今回から3回に分けて、端末間で簡単なデータ交換ができるところまで説明していきたいと思います。
今回は、アプリケーションの起動〜Bluetoothの設定をONにするまでを説明します。
ポイントは、デバイスのBluetoothAdapterを取得してBluetoothのシステム情報を引き出し、Intentを用いて端末Bluetoothの設定をONにするようユーザーに促す画面を表示し、onActivityResult()にてその結果を受け取ります。
でも一部触れていますが、そちらも参考にしながら、おさらいも兼ねて一から説明したいと思います。
それでは続きをどうぞ。
パーミッションの設定
Androidプロジェクトを新規作成したら、まず初めに忘れがちなパーミッションの設定を行っておきましょう。
それでは、ルートディレクトリにあるAndroidManifest.xmlファイルを開きます。
AndroidManifest.xmlを開いたら、以下の二つのパーミッションを追加します。
main.xml
<!--Bluetoothによる通信を許可する--> uses-permission android:name="android.permission.BLUETOOTH"> <!--Bluetoothの設定変更を許可する--> uses-permission android:name="android.permission.BLUETOOTH_ADMIN">
追加場所は、他のパーミッション同様、<manifest>タグ直下ですのでお間違えなく。
端末がBluetoothに対応していることを確認する
それでは.javaファイル(本サンプルではBluetoothSample.javaとする)の方を編集していきます。
まず初めに行わなければならないのは、端末がBluetoothに対応していることを確認することです。
対応していなかった場合には、そっとアプリを終了します。
Bluetoothに対応しているかどうかを確認するためには、BluetoothAdapterを取得し、その中身を見ることで判断することができます。
Bluetooth非対応の場合はNullが返されます。
BluetoothSample.java
//BluetoothAdapter取得 BluetoothAdapter Bt = BluetoothAdapter.getDefaultAdapter(); if(!Bt.equals(null)){ //Bluetooth対応端末の場合の処理 Log("Bluetoothがサポートされてます。"); }else{ //Bluetooth非対応端末の場合の処理 Log("Bluetoothがサポートれていません。"); finish(); }
以上で、端末がBluetoothに対応していることを確認できました。
Bluetoothの設定がONであることを確認する。
端末がBluetoothを仕様可能であることが判明したら、次に端末のBluetoothの設定がONであることを確認する必要があります。
そしてもしもOFFだった場合には、ユーザーにONにするよう促すようにします。
BluetoothのON/OFFを確かめるには、先ほど取得したBluetoothAdapterからisEnabled()メソッドを用いて値を取得します。
BluetoothSample.java
boolean btEnable = Bt.isEnabled();
ONだった場合にはtrue、OFFだった場合にはfalseが返されます。
それでは、OFFだった場合に、ユーザーにBluetoothをONにするよう促します。
BluetoothSample.java
public void onCreate(Bundle savedInstanceState) { : 省略 : boolean btEnable = Bt.isEnabled(); if(btEnable == true){ //BluetoothがONだった場合の処理 }else{ //OFFだった場合、ONにすることを促すダイアログを表示する画面に遷移 Intent btOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(btOn, REQUEST_ENABLE_BLUETOOTH); } } @Override protected void onActivityResult(int requestCode, int ResultCode, Intent date){ //ダイアログ画面から結果を受けた後の処理を記述 }
これで、もし端末のBluetoothの設定がOFFだった場合には、以下の画像のような画面が表示されます。
「はい」を押すと、システムのBluetoothをONする処理が行われます。
(「Setting」→「無線とネットワーク」にて、Bluetoothにチェックが入っていることを確認しましょう)
最後に、上図画面の結果を受け取り、その続きの処理を行うようにします。
さきほどのソースコードのonActivityResult()の中身を以下のように記述します。
BluetoothSample.java
@Override protected void onActivityResult(int requestCode, int ResultCode, Intent date){ if(requestCode == REQUEST_ENABLE_BLUETOOTH){ if(ResultCode == Activity.RESULT_OK){ //BluetoothがONにされた場合の処理 Log("BluetoothをONにしてもらえました。"); }else{ Log("BluetoothがONにしてもらえませんでした。"); finish(); } } }
今回は、BluetoothAdapterを取得し、端末がBluetoothに対応していることを確認し、さらにBluetoothがONになっていることを確認した後、その結果を受けるところまでを説明しました。
次回は、Bluetoothデバイスをスキャンし、接続可能なデバイス一覧のリストを作成してみたいと思います。