마스터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일 답변
...