編輯:關於Android編程
短按耳機鍵默認是暫停/播放音樂功能,按照如下的修改方式可以實現短按耳機鍵暫停/播放FM
please delete your media button code, modify as below:
1. AndroidMenifest.xml :
<receiver android:name=".FMRadioActivity$MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
2. FMRadioActivity.java code:
public interface MediaButtonListener {
void onMediaButtonCall(Intent intent);
}
private MediaButtonListener mMediaButtonListener = new MediaButtonListener() {
@Override
public void onMediaButtonCall(Intent intent) {
String action = intent.getAction();
LogUtils.d(TAG, "onMediaButtonCall.action:" + action);
KeyEvent event = (KeyEvent)
intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
LogUtils.d(TAG, "onMediaButtonCall.event:" + event);
if (Intent.ACTION_MEDIA_BUTTON.equals(action)) {
LogUtils.d(TAG, "--Mediareceiver.event.getKeyCode(): " + event.getKeyCode());
LogUtils.d(TAG, "--Mediareceiver.event.getAction(): " + event.getAction());
if (KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE == event.getKeyCode() && event.getAction() == KeyEvent.ACTION_UP) {
LogUtils.d(TAG, "--Mediareceiver.pause");
if (mIsPlaying) {
LogUtils.d(TAG, "onMediaButtonCall.power down fm");
refreshImageButton(false); refreshActionMenuItem(false);
refreshPopupMenuItem(false);
refreshActionMenuPower(false); exitService();
}
} else if (KeyEvent.KEYCODE_MEDIA_NEXT == event.getKeyCode() && event.getAction() == KeyEvent.ACTION_UP) {
if (mIsPlaying) {
LogUtils.d(TAG, "onMediaButtonCall.seek next station");
seekStation(mCurrentStation, true);
}
}
}
}
};
public static class MediaButtonReceiver extends BroadcastReceiver {
static MediaButtonListener mListener = null;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (null != mListener) {
mListener.onMediaButtonCall(intent);
this.abortBroadcast();
}
}
public static void registerMediaButtonListener(MediaButtonListener callback) {
mListener = callback;
}
}
onCreate method:
MediaButtonReceiver.registerMediaButtonListener(mMediaButtonListener);
ComponentName rec = new ComponentName(getPackageName(),
MediaButtonReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);
powerupFM method:
mAudioManager.registerMediaButtonEventReceiver(new ComponentName(this.getPackageName(),
MediaButtonReceiver.class.getName()));
exitService method:
mAudioManager.unregisterMediaButtonEventReceiver(new ComponentName(this.getPackageName(),
MediaButtonReceiver.class.getName()));
本節學習系統中特殊的廣播接收者。我們前面幾節不是說了,當廣播接受者一旦注冊到系統中,當系統發送的廣播和你注冊的廣播的action匹配時,系統就會啟動廣播接收者所在的進程。
一、引子 學過Android的同學都知道,對話框的重要程度非常高,任何一款 app幾乎都離不開對話框,值得慶幸的是,對話框的運用在Android中還是相對比較容易的。雖然
先上圖: 這裡要實現的是,點擊上面的按鈕後,將TextView隨機移動到底部按鈕的位置 首先,將底部按鈕放入list中,方便後
綜述 View的繪制流程可以分為三大步,它們分別是measure,layout和draw過程。measure表示View的測量過程,用於測量View的寬度和高度;lay