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

위치경보 브로드캐스트리시버 질문이요

0 추천

위치정보를 받고 db에 추가하는동시에 브로드캐스트리시버에 등록하는건데요

등록은되는데 받지를 못하는것같습니다 ㅠㅠ 왜이럴까용

private void register(int id, double latitude, double longitude, float radius, long expiration) {
    Intent proximityIntent = new Intent(intentKey);
    proximityIntent.putExtra("id", id);
    proximityIntent.putExtra("latitude", latitude);
    proximityIntent.putExtra("longitude", longitude);
    PendingIntent intent = PendingIntent.getBroadcast(this, id, proximityIntent, PendingIntent.FLAG_CANCEL_CURRENT);

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        return;
    }
    locationManager.addProximityAlert(latitude, longitude, radius, expiration, intent);
    PendingIntentList.add(intent);
    Log.i("등록", String.valueOf(id));
}
private void insertToDB(String name, String x, String y, String r, String day, String fh, String fm, String lh, String lm, String sound, String mode, String message) {
    int newId = didyouTable.insert(name, x, y, r, day, fh, fm, lh, lm, sound, mode, message);
    Log.i("inster",String.valueOf(newId));
    register(newId, xx, yy, radius, -1);
    InfoClass info = new InfoClass(newId + "",name, x, y, r, day, fh, fm, lh, lm, sound, mode, message);
    adapter.insert(info);
    adapter.notifyDataSetChanged();

}
public class IntentReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String key = LocationManager.KEY_PROXIMITY_ENTERING;
        Boolean entering = intent.getBooleanExtra(key, false);
        if (entering) {
            Log.d("입장", "entering");
        }else {
            Log.d("입장", "exiting");
        }
    }
}
bowwow (220 포인트) 님이 2017년 1월 23일 질문
글자를 흰색으로 해놓지 마세요.

1개의 답변

0 추천
흠...브로드 캐스트 리시버를 한번도 안써보신거 같아서 초보 기준으로 말씀드리자면

브로드 캐스트 리시버는 종류가 두개입니다.

하나는 시스템에서 제공받을 수 있는 리시버가 있구요(이미 정의되어 있으며 약속된 방법으로 등록 후 사용가능)

두번째는 본인이 만드는 커스텀 브로드캐스트 리시버가 있습니다. 브로드 캐스트 리시버는 액티비티, 혹은 서비스에서

registerReceiver를 통해서 등록하고 Destroy시 unregisterReceiver로 해제합니다. 리시버가 등록된 상태에서

GPS를 받거나 DB에 저장하는 클래스에서 sendBroadcastReceiver를 통해서 브로드 캐스트 리시버에 데이터를 전달합니다.

단순하게 onReceiver 구현한다고 받아지는게 아니라는 소리죠...그리고 글자 흰색으로 하지 마시구요 ㅋ

사용목적으로 봤을때는 DB에 저장한 값을 그대로 쓰고 싶으신거니까 GPS관련 브로드캐스트리시버가 아니라

커스텀 브로드 캐스트 리시버를 만들어서 사용하는게 맞다는 결론입니다.
라쎄린드 (25,460 포인트) 님이 2017년 1월 24일 답변
...