2013-08-10 1 views
0

Est-ce que quelqu'un sait quel est le problème qui cause l'alerte incendie ne fonctionne pas quand entrer dans le rayon de proximité? J'ai lutté pendant une semaine pour résoudre ce problème et je serai très reconnaissant si quelqu'un peut m'aider sur cette question ou me donner un guide pour le compléter.l'alerte de proximité ne se déclenche pas et notifie

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> 

Répondre

0

vous avez pas encore le récepteur dans le manifeste, "ProximityReceiver" est pas un Activité mais un récepteur. Essayez quelque chose comme ça.

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

Cheers.