私は Android 2.1 で作業しており、ヘッドセットが差し込まれている/取り出されていることを検出したいと考えています。私はアンドロイドにかなり慣れていません。
それを行う方法は、ブロードキャストレシーバーを使用することだと思います。これをサブクラス化し、AndroidManifest.xml に次のコードも追加しました。しかし、アクティビティのように、受信者を別の場所に登録する必要がありますか? これにはたくさんのスレッドがあることは承知していますが、彼らが何について話しているのかよくわかりません。また、AndroidManifest.xml に登録することと、アクティビティに動的に登録することの違いは何ですか?
<receiver android:enabled="true" android:name="AudioJackReceiver" >
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG" >
</action>
</intent-filter>
</receiver>
そして、これがクラスの実装(およびインポート)でした
public class AudioJackReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.w("DEBUG", "headset state received");
}
}
動作するかどうかを確認しようとしましたが、アプリケーションの実行中にヘッドセットを抜き差ししても何も表示されません。
編集:ドキュメントにはこれは記載されていませんが、マニフェストに登録されている場合、これが機能しない可能性はありますか? アプリケーションの 1 つに受信者を登録すると、応答することができました (または、とにかくそれを行う必要がありますか?)。