6

Tôi đang cố gắng tạo nhiều cảnh báo lân cận nhưng tôi không thể làm việc đó ...Người phát sóng có thể nhận nhiều chương trình phát sóng không?

Tôi nghĩ rằng bộ thu phát sóng bị ghi đè và do đó chỉ xử lý lần phát sóng cuối cùng. Vì vậy, nếu tôi có hai điểm đóng bởi chỉ có một người có ý định được tạo ra cuối cùng sẽ tạo ra một cảnh báo ...

Tôi đọc rằng tôi nên sử dụng mã yêu cầu, nhưng tôi không có ý tưởng về cách ...


phương pháp của tôi cho việc thiết lập các intents cấp phát và thu phát sóng ...

private void addProximityAlert(double latitude, double longitude, String poiName, String intentfilter) { 

    Bundle extras = new Bundle(); 
    extras.putString("name", poiName); 
    Intent intent = new Intent(PROX_ALERT_INTENT+poiName); 
    intent.putExtras(extras);  
    PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode, intent, 0); 
    locationManager.addProximityAlert(
     latitude, // the latitude of the central point of the alert region 
     longitude, // the longitude of the central point of the alert region 
     POINT_RADIUS, // the radius of the central point of the alert region, in meters 
     PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration 
     proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected 
    ); 
    requestCode++; 
    IntentFilter filter = new IntentFilter(intentfilter); 
    registerReceiver(new ProximityIntentReceiver(), filter); 
} 

lớp broadcastreceiver My

public class ProximityIntentReceiver extends BroadcastReceiver { 

private static final int NOTIFICATION_ID = 1000; 

@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); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0);   

    Notification notification = createNotification();   
    notification.setLatestEventInfo(context, 
     "Proximity Alert!", "You are approaching: " +intent.getExtras().get("name"), pendingIntent);  
                     //here------------------------------------- 
    notificationManager.notify(NOTIFICATION_ID, notification); 

} 

private Notification createNotification() { 
    Notification notification = new Notification(); 

    notification.icon = R.drawable.androidmarker; 
    notification.when = System.currentTimeMillis(); 

    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.flags |= Notification.FLAG_SHOW_LIGHTS;   
    notification.flags |= Notification.FLAG_INSISTENT; 

    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    notification.defaults |= Notification.DEFAULT_SOUND; 

    notification.ledARGB = Color.WHITE; 
    notification.ledOnMS = 300; 
    notification.ledOffMS = 1500; 

    return notification; 
} 

} 

Bạn có thể giúp tôi được không ??? Tôi thực sự bị mắc kẹt với điều này ...

Bất kỳ trợ giúp nào sẽ thực sự được đánh giá cao !!!

Trả lời

8

tôi đã nhận nó làm việc sau khi tất cả ...

Chính xác những gì tôi đang tìm kiếm: http://www.gauntface.co.uk/blog/2010/01/04/proximity-alerts-in-android/

Modifications tôi đã


private void addProximityAlert(double latitude, double longitude, String poiName) { 

    Bundle extras = new Bundle(); 
    extras.putString("name", poiName); 
    extras.putInt("id", requestCode); 
    Intent intent = new Intent(PROX_ALERT_INTENT); 
    intent.putExtra(PROX_ALERT_INTENT, extras); 
    PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode , intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    locationManager.addProximityAlert(
     latitude, // the latitude of the central point of the alert region 
     longitude, // the longitude of the central point of the alert region 
     POINT_RADIUS, // the radius of the central point of the alert region, in meters 
     PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration 
     proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected 
    ); 
    requestCode++;  
} 

private void initialiseReceiver() 
{ 
    IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
    registerReceiver(new ProximityIntentReceiver(), filter); 
} 

package michaels.pack; 

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 ProximityIntentReceiver extends BroadcastReceiver { 

private static final int NOTIFICATION_ID = 1000; 

@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 receiverrrrrrrrrrrrrrrrrr"); 
    } 
    else { 
     Log.d(getClass().getSimpleName(), "exiting"); 
    } 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0);   

    Notification notification = createNotification();   
    notification.setLatestEventInfo(context, 
     "Proximity Alert!", "You are approaching: " +intent.getBundleExtra("michaels.pack.ProximityAlert.").get("name"), pendingIntent);  
                     //here------------------------------------- 
    notificationManager.notify(intent.getBundleExtra("michaels.pack.ProximityAlert.").getInt("id"), notification); 

} 

private Notification createNotification() { 
    Notification notification = new Notification(); 

    notification.icon = R.drawable.androidmarker; 
    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.defaults |= Notification.DEFAULT_SOUND; 

    notification.ledARGB = Color.WHITE; 
    notification.ledOnMS = 300; 
    notification.ledOffMS = 1500; 

    return notification; 
} 

} 
+1

Chỉ cần để cho tất cả các bạn đều biết tôi đã đăng bản cập nhật trên mã ban đầu của mình bao gồm một ví dụ đầy đủ về GitHub: http: //www.gauntface.co.uk/pages/blog/2010/12/28/how-to-multiple-proximity-alerts-in-android/ –

+1

Làm cách nào bạn xóa cảnh báo? Tôi chỉ tiếp tục xây dựng. :( – deucalion0

+0

Đã một lúc rồi và tôi không thực sự nhớ những gì tôi đã làm xin lỗi – mixkat

Các vấn đề liên quan