Androidでアプリを作るのに少し苦労しています。作成に役立ついくつかのクラスを見つけましたが、実装方法がわかりません。
アプリは次のことを行う必要があります。
- ネットワーク信号を検索し、設定された時間間隔 (5 分など) が経過しても何も検出されない場合、機内モードが有効になります。
- さらに時間が経過すると、機内モードが無効になり、アプリは再びインターネット信号を検索します。
これに関する情報を検索すると、機能する可能性のある 3 つのクラスが見つかりました。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 の機能は、ユーザー入力が正しく行われたことを確認するだけなので、時間の確認を開始したことを示唆するものは何もありません。上記のクラスは、機内モードを有効にすることになっています。それを無効にするクラスに関しては、上記の投稿と十分に似ているため、少し冗長になります。
2 つのクラスは、listView レイアウトからの選択に応じて、いずれかのクラスを開始するメイン クラスを介してアクセスされます。