MediaSession을 이용해 이어폰의 버튼으로 Toast 띄우기
조회수 2138회
안드로이드 스튜디오에서 어플리케이션을 만들고 있는데
이어폰을 연결한 상태에서 이어폰에 달린 음량 조절 버튼을 누르면
어떠한 기능을 하게 하고 싶은데 일단 연결이 안되는거같아서 Toast를 통해서 띄우려고 하는데 띄워지지 않습니다.
HeadsetReceiver.java
import android.content.Context;
import android.content.Intent;
import android.media.session.MediaSession;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
public class HeadsetReceiver {
MediaSession.Callback callback = new MediaSession.Callback(){
@Override
public void onPlay(){
}
@Override
public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
Context context = null;
String intentAction = mediaButtonIntent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
Toast.makeText(context, "MEDIA BUTTON ON!", Toast.LENGTH_SHORT).show();
KeyEvent event = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event != null) {
int action = event.getAction();
if (action == KeyEvent.ACTION_UP) {
//if(action == KeyEvent.KEYCODE_MEDIA_PREVIOUS){
Toast.makeText(context, "MEDIA PREVIOUS IS CLICKED", Toast.LENGTH_SHORT).show();
// }
//else if(action == )
return true;
}
}
}
if (mediaButtonIntent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) {
Log.e("TAG", "ACTION MEDIA BUTTON ON!");
}
return false;
};
};
}
MainActivity.java
import android.content.Context;
import android.content.Intent;
import android.media.session.MediaSession;
import android.media.session.PlaybackState;
import android.os.ResultReceiver;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private final MediaSession.Callback mSessionCallback = new MediaSession.Callback() {
@Override
public boolean onMediaButtonEvent(Intent intent) {
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
Toast.makeText(getApplicationContext(), "event", Toast.LENGTH_LONG).show();
if ((event != null) && (event.getKeyCode() == KeyEvent.KEYCODE_HEADSETHOOK)) {
Toast.makeText(getApplicationContext(), "HEADSET HOOK", Toast.LENGTH_LONG).show();
}
return true;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
여기까지입니다.
구글링을 통해 BroadCastReceiver부터 시작해서 API 21버전 위로는 MediaSession을 이용하면 된다는것까지 거의 관련된 모든글을 보았지만 부분 부분만 적혀있고 해서
어떤 부분에서 안되는지 모르겠습니다.
Manifest에는 어떤 내용을 등록해야하는지
좀 자세하게 샘플 코드등을 주실수 있으신가요? ㅜㅜ 도와드립니다. 2일째 여기에 막혀있네요 ..
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력