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デバイスをスキャンし、接続可能なデバイス一覧のリストを作成してみたいと思います。

One Comment