Android & Bluetooth(その2)

公開日: : 最終更新日:2015/02/09 Android, Java ,

前回は、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ばかり書いてるけど、全く見当違いな事ばかり書いてたんだな・・・

メイン広告

関連記事

no image

Android開発環境の導入(その6) – EclipseのAndroid Plug-inとSDKを連携させる

前回は「

記事を読む

no image

Android開発環境の導入(その1)

自宅資料の中から使いそうなやつを抜粋。   何回かに分けて公開しよう。

記事を読む

no image

Android開発環境の導入(その7) – Android端末をPCに認識させる

前回は「

記事を読む

no image

Android & Bluetooth(その1)

さて、今回は自己満足の自作アプリをBluetoothで制御しようとしハマッたお話です。 大概記事書

記事を読む

no image

端末の電池の残量をアクティビティに渡したい

アプリを作成している時に、端末の電池の残量を取得したい事があると思います。仕組みは電池の残量を管理す

記事を読む

no image

androidをスリープ状態にしたくない!

今回はandroid開発ネタで。動画や音楽再生には必須といえる「スリープ状態にしない」とい対応につい

記事を読む

no image

Android開発環境の導入(その2) – JDKのインストール

前回は全体の流れを書いたけど、今回からは具体的な内容へ!   まずは「JDKの

記事を読む

no image

AndroidManifest.xmlのandroid:launchModeについて

今回は、AndroidManifest.xmlのandroid:launchModeについてなんだか

記事を読む

no image

Android開発環境の導入(その4) – Eclipseのインストール

前回は「

記事を読む

no image

Android開発環境の導入(その3) – Android SDKのインストール

前回は「

記事を読む

横長広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


メイン広告

no image
SSDの換装

久しぶりです。新しくブログが更新されたと言うことは・・・。 そうです

CentOS7.2で最小限のインストール

今回は、最新のCentOS 7.2をインストールしてみよう。GUIベー

phpMyAdminの拡張機能を設定しよう

いまさらだけどちょうどサーバ環境を作る機会があったので phpMyA

PHP7とPHP5を比較してみよう(3)

前回は配列について比較したけど今回はZendFramework、lar

PHP7とPHP5を比較してみよう(2)

前回予告したとおり、今回はPHP5の配列とPHP7の配列・配列に連想配

→もっと見る

PAGE TOP ↑