Android & Bluetooth(その2)
前回は、AndroidアプリをBluetoothで制御するのにお手上げ状態でした。今回は、他のBluetoothが正常に動いているアプリをごにょごにょして確認。
まずはUUIDを何にしているのかソースを確認。
ん?んん??
UUIDがない・・・だと?!
では、listenUsingRfcommWithServiceRecordを探す。
んん??
ないぞ?
もしかして、プログラムで通信やってない??
AndroidManifestを見てみる。
<uses-permission android:name=”android.permission.BLUETOOTH”/>
がない・・・だと?!
じゃあどこでやってんだ?と、見比べていると怪しいものを発見。
<action android:name=”android.intent.action.MEDIA_BUTTON” />
これでググると、正解!
結局あっさり解決しましたとさ
AndroidManifest.xml
<receiver android:name=”Receiver”>
<intent-filter>
<action android:name=”android.intent.action.MEDIA_BUTTON” />
</intent-filter>
</receiver>
Receiver .java
public class Receiver extends android.content.BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
// 再生ボタンを押したよ
if (audioManager.isBluetoothA2dpOn()) {
// Bluetoothで再生中
}
}
}
}
}
Activity
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
ComponentName receiverName = new ComponentName(getPackageName(), Receiver.class.getName());
audioManager.registerMediaButtonEventReceiver(receiverName);
}
ちなみにaudioManager.isBluetoothA2dpOn()は
<uses-permission android:name=”android.permission.MODIFY_AUDIO_SETTINGS”/>
をしないと正しくデータを取得できないもよう。
最後にまとめ
メディアを制御するボタンが押下された
<action android:name=”android.intent.action.MEDIA_BUTTON” />
Bluetoothのペアリングが解除された
<action android:name=”android.media.AUDIO_BECOMING_NOISY” />
Btuetoothが接続された
<action android:name=”android.bluetooth.device.action.ACL_CONNECTED” />
Bluetoothが切断された
<action android:name=”android.bluetooth.device.action.ACL_DISCONNECTED” />
A2dpの出力状態が変更された
<action android:name=”android.bluetooth.a2dp.action.SINK_STATE_CHANGED” />
やれやれ、本とかBluetoothAdapterばかり書いてるけど、全く見当違いな事ばかり書いてたんだな・・・
メイン広告
関連記事
-
androidをスリープ状態にしたくない!
今回はandroid開発ネタで。動画や音楽再生には必須といえる「スリープ状態にしない」とい対応につい
-
Android開発環境の導入(その2) – JDKのインストール
前回は全体の流れを書いたけど、今回からは具体的な内容へ! まずは「JDKの
-
AndroidManifest.xmlのandroid:launchModeについて
今回は、AndroidManifest.xmlのandroid:launchModeについてなんだか
-
端末の電池の残量をアクティビティに渡したい
アプリを作成している時に、端末の電池の残量を取得したい事があると思います。仕組みは電池の残量を管理す
-
Android開発環境の導入(その1)
自宅資料の中から使いそうなやつを抜粋。 何回かに分けて公開しよう。
横長広告
- PREV
- Android & Bluetooth(その1)
- NEXT
- CentOSが突然死亡!