0

我在 Android 上制作应用程序时遇到了一些困难。我找到了一些课程来帮助制作,但我不知道如何实现。

该应用程序需要执行以下操作:

  1. 搜索网络信号,如果在设定的时间间隔(例如五分钟)后没有找到,则启用飞行模式。
  2. 又过了一段时间,飞行模式被禁用,应用程序再次搜索互联网信号。

在搜索这方面的信息时,我发现了三个可以工作的类,它们是 Settings(可能禁用/启用飞行模式)、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();
   }

}

Toast 的东西只是为了检查用户输入是否正确,所以没有什么可以建议我开始按时检查。上面的类应该启用飞行模式。至于禁用它的类,它与上面的帖子足够相似,有点多余。

这两个类是通过启动其中一个类的主类访问的,具体取决于从 listView 布局中的选择。

4

1 回答 1

0

我认为您需要 AlarmManager 再次启动您的应用程序。您可以在此处查看文档http://developer.android.com/reference/android/app/AlarmManager.html

正如它在开头所指出的那样,如果在等待时重新启动设备,您的应用程序将不会被触发。

[编辑]

错过了您说您已经尝试实现 AlarmManager 的部分。看看这个线程和 Mark Murphy 发布的来源。https://groups.google.com/forum/#!topic/android-developers/M7kWB95UltA

于 2011-10-26T02:20:50.323 回答