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

칠리님 브로드캐스트리씨버 질문이요 !!

0 추천

제가 하고자 하는것은

어플실행시

화면에 가속도센서값을 이용해서 폰 움직일때마다  (지진계처럼) onDraw   cancas 로 계속 그리고있습니다.

근데 이 값이 일정 값 이상되면  다른 activity로 넘어가게 하고싶은겁니다

 

그래서 현재 한거는

일정 값이상이되었을떄

if(value > 20)
{
mStop = true;
sendBroadcast(new Intent("b"));
}
 
--------------------------------------------------------------------------------------b로 신호를 보내서
 
 
public class receive extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
         
        String name = intent.getAction();
         
        if(name.equals("b")){------------------------------------------------------------b받았을때  camera 액티비티 호출
        Intent camera = new Intent(context, camera.class);
        context.startActivity(camera);
        }
    }
}

이렇게 구현해서 실행하였는데

일정값 이상일때 b신호를 받는건 되는데  원하는 camera액티비티 호출을 못하고 그냥 어플이 닫힙니다

 

강제종료되서 에러뜨는것도아니라  에러확인이안되네요 ㅠㅠ  왜그럴까요

kjlolo0 (370 포인트) 님이 2014년 2월 12일 질문
그 20이라는 값이 순간적으로 여러번 들어와서 죽는거 아닌가요?
member boolean 하나 두시고 onResume에서 초기화하시고...
그 값따라 호출하는건 어떻까요...
ex)
boolean eventOccured

if(!eventOccured && value > 20)
{
eventOccured = true;
mStop = true;
sendBroadcast(new Intent("b"));
}

@override
protected void onResume(){
super.onResume();
eventOccured = false;

1개의 답변

0 추천

닫히는건 모르겠고..

activity

onResume > registerReceiver(BroadcastReceiver, IntentFilter);

onPause > unregisterReceiver(BroadcastReceiver);

이거 처리 하셨나요?

 

아래는 제가 Base쓰고있는 Activity중에 짤라서 퍼온거라... 구성이 이상할 수 있으나...

private static final String ACTION_CALL_CAMERA = MainActivity.class.getPackage().getName()+".ACTION_CALL_CAMERA";
    private MyBroadcastReceiver mReceiver;
 
    private class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent == null || Strings.isNullOrEmpty(intent.getAction())) {
                return;
            }
            onReceivedAction(intent.getAction());
        }
    }
 
    protected void onReceivedAction(String action) {
        if(ACTION_CALL_CAMERA.equals(action)){
            startActivity(new Intent(this, Camera.class));
        }
    }
 
    protected IntentFilter onCreateActionFilter() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ACTION_CALL_CAMERA);
        return filter;
    }
 
 
    @Override
    protected void onResume() {
        super.onResume();
        IntentFilter filter = onCreateActionFilter();
        if (filter != null) {
            if (mReceiver == null) {
                mReceiver = new MyBroadcastReceiver();
            }
            registerReceiver(mReceiver, filter);
        }
    }
 
 
    @Override
    protected void onPause() {
        super.onPause();
        if (mReceiver != null) {
            unregisterReceiver(mReceiver);
        }
    }

 

칠리님 (10,910 포인트) 님이 2014년 2월 12일 답변
...