2013-08-10 5 views
0

근접 반경에 들어갔을 때 화재 경보가 작동하지 않는 원인은 누구인지 압니까? 저는이 문제를 해결하는데 일주일 동안 고생했습니다. 누군가가이 문제에 대해 저를 도울 수 있거나 그것을 완성하기위한 가이드를 줄 수 있다면 정말 감사 할 것입니다.근접 경보가 작동하지 않으며 알려지지 않음

MainActivity.java

import android.location.LocationManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 


public class MainActivity extends Activity { 

    private static final long POINT_RADIUS = 150; // in Meters 
    private static final long PROX_ALERT_EXPIRATION = -1; // will not expire 
    private static final String PROX_ALERT_INTENT = "com.example.myalert"; 
    private LocationManager locationManager; 
    double latitude = 2.81202, longitude = 101.75989; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     Intent intent = new Intent(PROX_ALERT_INTENT); 
     PendingIntent proximityIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
     locationManager.addProximityAlert(latitude, longitude, POINT_RADIUS, PROX_ALERT_EXPIRATION, proximityIntent); 
    } 

} 

ProximityReceiver.java

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.location.LocationManager; 
import android.util.Log; 

public class ProximityReceiver extends BroadcastReceiver{ 
    private static final int NOTIFICATION_ID = 1000; 

    @SuppressWarnings("deprecation") 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String key = LocationManager.KEY_PROXIMITY_ENTERING; 
     Boolean entering = intent.getBooleanExtra(key, false); 
     if (entering) { 
        Log.d(getClass().getSimpleName(), "entering"); 
      }else { 
        Log.d(getClass().getSimpleName(), "exiting"); 
      } 
      NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

      Intent notificationIntent = new Intent(context, MainActivity.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
      Notification notification = createNotification(); 
      notification.setLatestEventInfo(context, "Proximity Alert!", "You are near your point of interest.", pendingIntent); 

      notificationManager.notify(NOTIFICATION_ID, notification); 
    } 

    private Notification createNotification() { 
     Notification notification = new Notification(); 
     notification.icon = R.drawable.ic_launcher; 
     notification.when = System.currentTimeMillis(); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 
     notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
     notification.defaults |= Notification.DEFAULT_VIBRATE; 
     notification.defaults |= Notification.DEFAULT_LIGHTS; 
     notification.ledARGB = Color.WHITE; 
     notification.ledOnMS = 1500; 
     notification.ledOffMS = 1500; 
     return notification; 
    } 
} 

의 AndroidManifest.xml이

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myalert" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.myalert.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="ProximityReceiver"> 
     </activity> 
    </application> 

</manifest> 

답변

0

매니페스트, "ProximityReceiver"의 수신기를 설정하지 않은는 아니다 활동이지만 수신기. 다음과 같이 시도해보십시오.

<receiver android:name="ProximityReceiver" > 
     <intent-filter> 
      <action android:name="com.example.myalert" /> 
     </intent-filter> 
    </receiver> 

건배.