Ich implementiere Karte Ort Alarm, ich erfolgreich erhalten Benachrichtigung, wenn ich mein Ziel erreichen werde, aber das Problem ist mein Telefon ist im Schlafmodus, ich kann keine Benachrichtigung erhalten , ich weiß nicht, wie man mit System arbeitet, plz helfen Sie mir.einfache Benachrichtigung nicht angezeigt, wenn mein Telefon im Schlafmodus
hier ist mein Code ..
public class AreWeThereIntentService extends IntentService {
private final String TAG = AreWeThereIntentService.class.getName();
private SharedPreferences prefs;
private Gson gson;
public AreWeThereIntentService() {
super("AreWeThereIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
prefs = getApplicationContext().getSharedPreferences(
Constants.SharedPrefs.Geofences, Context.MODE_PRIVATE);
gson = new Gson();
// 1. Get the event
GeofencingEvent event = GeofencingEvent.fromIntent(intent);
if (event != null) {
if (event.hasError()) {
onError(event.getErrorCode());
} else {
// 2. Get the transition type
int transition = event.getGeofenceTransition();
if (transition == Geofence.GEOFENCE_TRANSITION_ENTER ||
transition == Geofence.GEOFENCE_TRANSITION_DWELL ||
transition == Geofence.GEOFENCE_TRANSITION_EXIT) {
List<String> geofenceIds = new ArrayList<>();
// 3. Accumulate a list of event geofences
for (Geofence geofence : event.getTriggeringGeofences()) {
geofenceIds.add(geofence.getRequestId());
}
if (transition == Geofence.GEOFENCE_TRANSITION_ENTER ||
transition == Geofence.GEOFENCE_TRANSITION_DWELL) {
// 4. Pass the geofence list to the notification method
onEnteredGeofences(geofenceIds);
}
}
}
}
}
private void onEnteredGeofences(List<String> geofenceIds) {
// 1. Outer loop over all geofenceIds
for (String geofenceId : geofenceIds) {
String geofenceName = "";
// 2, Loop over all geofence keys in prefs and retrieve NamedGeofence from SharedPreferences
Map<String, ?> keys = prefs.getAll();
for (Map.Entry<String, ?> entry : keys.entrySet()) {
String jsonString = prefs.getString(entry.getKey(), null);
NamedGeofence namedGeofence = gson.fromJson(jsonString, NamedGeofence.class);
if (namedGeofence.id.equals(geofenceId)) {
geofenceName = namedGeofence.name;
break;
}
}
// 3. Set the notification text and send the notification
String contextText =
String.format(this.getResources().getString(R.string.Notification_Text), geofenceName);
// 1. Create a NotificationManager
NotificationManager notificationManager =
(NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
// 2. Create a PendingIntent for AllGeofencesActivity
Intent intent = new Intent(this, AllGeofencesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
long[] pattern = { 0, 100, 200, 300 };
// 3. Create and send a notification
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.map_marker_icon)
.setContentTitle(this.getResources().getString(R.string.Notification_Title))
.setContentText(contextText)
.setContentIntent(pendingNotificationIntent)
.setStyle(new NotificationCompat.BigTextStyle().bigText(contextText))
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true)
.setSound(alarmSound)
.setVibrate(pattern)
.build();
notificationManager.notify(0, notification);
}
}
private void onError(int i) {
Log.e(TAG, "Geofencing Error: " + i);
}
}
i gefunden Lösung, die ich habe WakeLock zu verwenden, aber ich weiß nicht, wie und zu verwenden, wo ich umsetzen müssen, was ich brauche, ist, wenn meine Anmeldung noch aussteht dann will ich nicht, dass mein Telefon schläft, und wenn ich Benachrichtigung bekomme, dann wakelock freizugeben. wie mache ich das.
CHECK delay_while_idle sollte wahr sein –
Wie mache ich das? –
können Sie einen Code über Sie schreiben schreiben plz –