AndroidのService- 着信を監視する
TelephonyMangerを利用して着信状態を監視するServiceのサンプルコード。
概要: 着信イベントを取得し、ファイルに書き出す。 ※権限追加とService起動などは必要。
package com.example.liguofeng.mytelephonymanager; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import java.io.FileNotFoundException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Date; public class PhoneStateListenerService extends Service { public PhoneStateListenerService() { // コンストラクター } @Override public IBinder onBind(Intent intent) { System.out.println("Service is binded."); return null; } @Override public void onCreate() { super.onCreate(); System.out.println("Service is created."); // TelephonyManager取得 TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 状態リスナー PhoneStateListener listener = new PhoneStateListener(){ @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { // 待ち受け(終了時) case TelephonyManager.CALL_STATE_IDLE : break; // 通話 case TelephonyManager.CALL_STATE_OFFHOOK : break; // 着信 case TelephonyManager.CALL_STATE_RINGING : // 着信番号を出力 OutputStream os = null; try { os = openFileOutput("phoneList", MODE_APPEND); } catch (FileNotFoundException e) { e.printStackTrace(); } PrintStream ps = new PrintStream(os); ps.println(new Date() + "着信:" + incomingNumber); break; } super.onCallStateChanged(state, incomingNumber); } }; // リスナー設定 manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("Service is started."); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); System.out.println("Service is destoryed.."); } }