MediaSession을 이용해 이어폰의 버튼으로 Toast 띄우기

조회수 2131회

안드로이드 스튜디오에서 어플리케이션을 만들고 있는데

이어폰을 연결한 상태에서 이어폰에 달린 음량 조절 버튼을 누르면

어떠한 기능을 하게 하고 싶은데 일단 연결이 안되는거같아서 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일째 여기에 막혀있네요 ..

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)