最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程之利用服務(wù)實(shí)現(xiàn)電話監(jiān)聽的方法

 更新時(shí)間:2015年11月12日 11:54:48   作者:xy849288321  
這篇文章主要介紹了Android編程之利用服務(wù)實(shí)現(xiàn)電話監(jiān)聽的方法,較為詳細(xì)的分析了Android基于服務(wù)實(shí)現(xiàn)針對(duì)電話監(jiān)聽的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Android編程之利用服務(wù)實(shí)現(xiàn)電話監(jiān)聽的方法。分享給大家供大家參考,具體如下:

1. 啟動(dòng)模擬器,部署應(yīng)用
2. 利用模擬器控制器發(fā)送短信啟動(dòng)服務(wù)(查看日志輸出判斷是否成功)
3. 向模擬器撥打電話,并接聽,掛斷電話后,利用文件管理查看對(duì)應(yīng)的cache目錄或者sdcard中生成了3gp文件,并將其復(fù)制到pc中播放以驗(yàn)證。

清單設(shè)置(一個(gè)receiver,一個(gè)service,若干權(quán)限)

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
…
<application …>
<receiver android:name="BootBroadcastReceiver">
  <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
  </intent-filter>
</receiver>
<service android:name="PhoneListenerService" />

電話監(jiān)聽器服務(wù)類:PhoneListenerService

package cn.class3g.phonelistener;
...
public class PhoneListenerService extends Service {
public IBinder onBind(Intent arg0) {
 return null;
 }
 public void onCreate() {
 super.onCreate();
 Log.i("TAG", "服務(wù)啟動(dòng)了");
 // 對(duì)電話的來電狀態(tài)進(jìn)行監(jiān)聽
TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
 // 注冊(cè)一個(gè)監(jiān)聽器對(duì)電話狀態(tài)進(jìn)行監(jiān)聽
telManager.listen(new MyPhoneStateListener(),
 PhoneStateListener.LISTEN_CALL_STATE);
 } 
 private class MyPhoneStateListener extends PhoneStateListener {
 MediaRecorder recorder; 
 File audioFile; 
 String phoneNumber; 
 public void onCallStateChanged(int state, String incomingNumber) {
 switch (state) { 
 case TelephonyManager.CALL_STATE_IDLE: /* 無任何狀態(tài)時(shí) */
if (recorder != null) { 
 recorder.stop();// 停止刻錄 
recorder.reset();// 重設(shè) 
recorder.release();// 刻錄完成一定要釋放資源 
} 
break; 
 case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起電話時(shí) */
try { 
 recorder = new MediaRecorder(); 
 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 設(shè)置音頻采集原
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 內(nèi)容輸出格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 音頻編碼方式
// recorder.setOutputFile("/sdcard/myvoice.amr"); 
 audioFile = new File( 
 Environment.getExternalStorageDirectory(), 
 phoneNumber + "_" + System.currentTimeMillis() 
 + ".3gp"); 
 recorder.setOutputFile(audioFile.getAbsolutePath());
 Log.i("TAG", audioFile.getAbsolutePath()); 
 recorder.prepare(); // 預(yù)期準(zhǔn)備 
recorder.start(); 
 } catch (IllegalStateException e) { 
 e.printStackTrace(); 
 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 break; 
 case TelephonyManager.CALL_STATE_RINGING: /* 電話進(jìn)來時(shí) */
phoneNumber = incomingNumber; 
 break; 
 default: 
 break; 
 } 
 super.onCallStateChanged(state, incomingNumber); 
 } 
 } 
}

利用開機(jī)啟動(dòng)廣播啟動(dòng)服務(wù)(實(shí)驗(yàn)環(huán)境中為了方便起見可以先改用短消息廣播)

開機(jī)啟動(dòng)完成廣播action

復(fù)制代碼 代碼如下:
<action android:name="android.intent.action.BOOT_COMPLETED"/>

package cn.class3g.phonelistener; 
... 
public class BootBroadcastReceiver extends BroadcastReceiver { 
 public void onReceive(Context context, Intent intent) { 
 Log.i("TAG", "廣播被接收了"); 
Intent serviceIntent = new Intent(context, PhoneListenerService.class); 
 context.startService(serviceIntent); 
 } 
} 

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android實(shí)現(xiàn)音頻錄音與播放

    Android實(shí)現(xiàn)音頻錄音與播放

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)音頻錄音與播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android入門之使用SharedPreference存取信息詳解

    Android入門之使用SharedPreference存取信息詳解

    這篇文章主要為大家詳細(xì)介紹了Android如何使用SharedPreference實(shí)現(xiàn)存取信息,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下
    2022-12-12
  • flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫

    flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android指紋識(shí)別API初試

    Android指紋識(shí)別API初試

    這篇文章主要為大家詳細(xì)介紹了Android指紋識(shí)別API,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android手機(jī)鬧鐘用法實(shí)例

    Android手機(jī)鬧鐘用法實(shí)例

    這篇文章主要介紹了Android手機(jī)鬧鐘用法,以實(shí)例形式較為詳細(xì)的分析了Android實(shí)現(xiàn)鬧鐘功能的頁面布局及具體功能相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Android多種支付方式的實(shí)現(xiàn)示例

    Android多種支付方式的實(shí)現(xiàn)示例

    App的支付流程,添加多種支付方式,不同的支付方式,對(duì)應(yīng)的操作不一樣,有的會(huì)跳轉(zhuǎn)到一個(gè)新的webview,有的會(huì)調(diào)用系統(tǒng)瀏覽器,有的會(huì)進(jìn)去一個(gè)新的表單頁面,等等,本文就給大家詳細(xì)介紹一下Android 多種支付方式的優(yōu)雅實(shí)現(xiàn),需要的朋友可以參考下
    2023-09-09
  • Android讀取assets目錄下的所有圖片并顯示的方法

    Android讀取assets目錄下的所有圖片并顯示的方法

    這篇文章主要介紹了Android讀取assets目錄下的所有圖片并顯示的方法,對(duì)讀取assets文件夾的原理與方法做了詳細(xì)的分析,并給出了讀取圖片文件的實(shí)例,非常具有參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • 在android中增加curl的解決方法

    在android中增加curl的解決方法

    本篇文章是對(duì)在android中增加curl的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android自定義廣播接收

    Android自定義廣播接收

    這篇文章主要為大家詳細(xì)介紹了Android自定義廣播接收,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android 中TeaPickerView數(shù)據(jù)級(jí)聯(lián)選擇器功能的實(shí)例代碼

    Android 中TeaPickerView數(shù)據(jù)級(jí)聯(lián)選擇器功能的實(shí)例代碼

    這篇文章主要介紹了Android TeaPickerView數(shù)據(jù)級(jí)聯(lián)選擇器 ,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

北海市| 西安市| 视频| 塔河县| 东乡族自治县| 察隅县| 新巴尔虎左旗| 呼伦贝尔市| 从化市| 德阳市| 榆社县| 泽州县| 留坝县| 广昌县| 辽阳市| 西盟| 阜南县| 谢通门县| 广西| 贡山| 彰武县| 巧家县| 特克斯县| 阳东县| 瑞昌市| 开封市| 洮南市| 印江| 秦皇岛市| 嘉兴市| 吉林省| 江北区| 平凉市| 富民县| 石家庄市| 烟台市| 锦屏县| 读书| 千阳县| 嘉黎县| 白山市|