마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서비스 엑티비티 통신 문제입니다.(이어폰 연결 유무)

0 추천
private class MyReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        peak = intent.getDoubleExtra("peak", peakdBa_miu);
        avg = intent.getDoubleExtra("avg", avrdBa);
        int m_vol = intent.getIntExtra("v", m_Vol);
        bool = intent.getIntExtra("ear", bool);
        time = intent.getIntExtra("time", time);
        micdba = intent.getDoubleExtra("back", micdba);
    }
}
<pre style="font-family: Consolas; font-size: 13.5pt;">class myServiceHandler extends Handler {
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public void handleMessage(android.os.Message msg) {
        Intent intent = new Intent(MyService.this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyService.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        Notifi = new Notification.Builder(getApplicationContext())
                .setContentIntent(pendingIntent)
                .build();
        mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                //AudioManager audio = (AudioManager) getSystemService(MyService.this.AUDIO_SERVICE);
                boolean isEarphoneOn = (intent.getIntExtra("state", 0) > 0) ? true : false;
                if (isEarphoneOn) {
                    Log.e("SSSS","Start");
                    //핸들러실행
                } else {
                    Log.e("SSSS","STOP");
                    //핸들러를 삭제
                }
            }
        };
        registerReceiver(mBroadcastReceiver, mIntentFilter);
    }
}</pre>
 
 
현재 위 소스가 엑티비티이고
아래 소스가 서비스 부분입니다.
헌데 확인해보니 이어폰이 연결이 되어 있으면 계속적으로
Log.e("SSSS","Start"); 이부분이 불리더라고요....
그래서 엑티비티에서 start를 보이도록 하고
stop도 보이도록 하니까
이어폰을 뺐는데도 가끔 start가 남아있는 문제가 발생하게 되엇습니다
 
start부분이 이어폰 연결시 계속 불리는 문제때문에 그런것인가 아니면 다른 문제인가
모르겠는데...
 
혹시 엑티비티와 서비스 통신에서 엑티비티를 Receiver로 하는게 아니라 다른 방법으로 해야 되나요?
익명사용자 님이 2017년 11월 6일 질문

1개의 답변

0 추천
오늘 추가 답변 했는데요. isEarPhoneOn을 Integer로 받아야 합니다.

boolean 타입이 아닙니다.
Will Kim (43,170 포인트) 님이 2017년 11월 6일 답변
...