2012-05-18 6 views
1

Я разрабатываю оповещение о местоположении, которое является приложением для Android.как всплывать тревогу, даже когда приложение закрыто

Вся кодирующая часть выполнена.

Но диалоговое окно предупреждения не отображается, когда приложение закрыто.

Пожалуйста, помогите мне, я пытаюсь открыть будильник даже тогда, когда пользователь использует другое приложение или находится на главном экране.

код моей тревоги на данный момент показан ниже:

final MediaPlayer mp = MediaPlayer.create(LocAlarmProject.this, R.raw.airtel); 

mp.start();   

// LocAlarmProject.this below is what's causing the problem: 
final AlertDialog.Builder builder=new AlertDialog.Builder(LocAlarmProject.this); 

builder.setTitle(disp_title); 

builder.setMessage(disp_desc); 

builder.setIcon(R.drawable.alarm); 

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

public void onClick(DialogInterface dialog, int which) {       

    mp.stop(); 

} 

}); 

builder.show(); 
+0

Вам нужно будет создать действие и создать его как диалог. Вы не можете открыть диалог, созданный закрытой активностью. – Tarun

+0

Я новичок в android. не имея большого представления об этом. Не могли бы вы сообщить мне об этом или дать ссылку, чтобы я мог ее закодировать. Я пробую это от 2 дней. пожалуйста помоги. –

+0

Вы предлагаете, андроид: theme = "@ android: style/Theme.Dialog"? –

ответ

1

Я уверен, что вы ищете Service.

скопированных и Paste:

Услуги, является компонент приложения, представляющий либо желание приложения выполнить более длительную операцию, а не , взаимодействующую с пользователем или подачу удовольствия ctionality для других приложений для использования. Каждый класс обслуживания должен иметь соответствующую декларацию в AndroidManifest.xml своего пакета. Службы можно запустить с помощью Context.startService() и Context.bindService().

0

Правильный способ сделать это требует нескольких шагов. Извините, это не так, если вы еще этого не делали:

Во-первых, вы собираетесь использовать встроенный Android AlarmManager, чтобы запланировать время, в которое вы хотите активировать свое приложение. Вы планируете новый будильник со временем для пробуждения и PendingIntent.

Во-вторых, создайте свой PendingIntent, который используется для активации вашего приложения на время, чтобы показать будильник.

В-третьих, вы можете справиться с этим намерением несколькими способами, наиболее распространенным является создание класса, который расширяет BroadcastReceiver, чтобы получить намерение. Этот класс уведомляется, когда пришло время показать будильник. Цель, которую вы создали и помещаете в свой PendingIntent, передается ее методу onReceive(). Вы передаете эту информацию в свое приложение, чтобы отобразить диалоговое окно предупреждения. --- Вместо этого вы можете просто зарегистрировать основное приложение, чтобы получить Intent вместо этого, а затем переопределите метод onNewIntent(Intent) в своей деятельности.

Четыре, зарегистрируйте свой BroadcastReceiver в своем AndroidManifest.xml файле. Это также место, где можно зарегистрировать этот приемник для прослушивания созданного вами намерения. Вы делаете это, используя тег <intent-filter>.

Пять, (необязательно), если вы хотите, чтобы ваш сигнал тревоги отображался, даже если телефон спит, и вы хотите убедиться, что он не возвращается в режим сна, прежде чем пользователь подтвердит сигнал тревоги, вам нужно будет получить WAKE_LOCK, чтобы сделать это.

Причина, по которой это предпочтительнее использовать Сервис, она не потребляет ресурсы только для ожидания тревоги, а также работает, если Android решит убить ваше приложение, освобождая память. Удачи и счастливого кодирования!

+0

Но мое приложение не является сигналом тревоги, основанной на времени. Он основан на местоположении. При изменении местоположения я хочу выставить будильник. –

Смежные вопросы