2011年9月6日火曜日

Bluetoothで通信を行う(1)

AndroidではBluetoothを利用して通信を行うことが可能です。
Bluetoothを利用して端末間で通信を行うまでには、いくつかの手順を踏む必要があります。

今回は、アプリケーションの起動〜Bluetoothの設定をONにするまでを説明します。
ポイントは、デバイスのBluetoothAdapterを取得してBluetoothのシステム情報を引き出し、Intentを用いて端末Bluetoothの設定をONにするようユーザーに促す画面を表示し、onActivityResult()にてその結果を受け取ります。

WiFiとBuletoothを簡単に有効にする
でも一部触れていますが、そちらも参考にしながら、おさらいも兼ねて一から説明したいと思います。
それでは続きをどうぞ。


パーミッションの設定
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

1
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){
//ダイアログ画面から結果を受けた後の処理を記述
}
(「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になっていることを確認した後、その結果を受けるところまでを説明しました。

0 件のコメント:

コメントを投稿