сделать приложение, чтобы включить режим аэропорта после установленного интервала? - PullRequest
0 голосов
/ 26 октября 2011

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

Приложение должно сделать следующее:

  1. поиск сетисигналы и, если они не были обнаружены через заданный интервал времени (например, пять минут), включается режим полета.
  2. через другой интервал времени режим полета отключается, и приложение снова выполняет поиск интернет-сигналов.

При поиске информации по этому вопросу я нашел три класса, которые могли бы работать: «Настройки» (возможно, чтобы отключить / включить режим «В самолете»), AlarmManager (рекомендуется на форуме, после того, как я сказал, что нашел класс Timer) и PhoneStateListener (для обнаружения сетевых сигналов)

Я настроил AlarmManager, где пользователи могут указывать интервалы через пользовательский интерфейс, но я не знаю, как определить, истекли ли временные интервалы или как правильно использоватьPhoneStateListener для этого материала.

Ниже приведен код для установки интервалов:

package com.android.nman;

import android.app.*;
import android.os.*;
import android.widget.*; // import for ArrayAdapter
import android.view.*; // import for views
import android.widget.AdapterView.*; // import for OnItemClickListener

public class nmanAir extends Activity
{
   private PendingIntent aSender;

   EditText time;
   Button set;
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       time = (EditText)findViewById(R.id.time);
       set = (Button)findViewById(R.id.set);
   }

   public void limitAction(View v)
   {
       // get current time
       long now = SystemClock.elapsedRealtime();

   String interval = time.getText().toString();
   int min = Integer.parseInt(interval);

       // schedule alarm
       AlarmManager air = (AlarmManager)getSystemService(ALARM_SERVICE);
   air.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, now, min*60000, aSender);

  // send message
  Toast.makeText(nmanAir.this, "Airplane check set to: " + min + " minutes", Toast.LENGTH_LONG).show();
   }

}

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

Доступ к двум классам осуществляется через основной класс, который запускает один из классов, в зависимости от выбора измакет listView.

1 Ответ

0 голосов
/ 26 октября 2011

Я думаю, вам нужен AlarmManager, чтобы снова запустить ваше приложение. Вы можете ознакомиться с документацией здесь http://developer.android.com/reference/android/app/AlarmManager.html.

Как отмечается в открытии, однако, если устройство будет перезагружено во время ожидания, ваше приложение, однако, не будет запущено.

[Изменить]

Пропустил ту часть, где вы сказали, что уже пытаетесь реализовать AlarmManager. Взгляните на эту ветку и источник, написанный Марком Мерфи. https://groups.google.com/forum/#!topic/android-developers/M7kWB95UltA

...