Upload
violet-best
View
67
Download
2
Embed Size (px)
DESCRIPTION
Android Service -電話錄音. 建國科技大學 資管系 饒瑞佶 2013/7 V1. Android Service -電話錄音. 需要 BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經完成了 例如收到一封簡訊、電池用量有變化或者 有人打電話進來 等等 Service. Android Service -電話錄音. 啟動本 App 或是開機後,服務將自動執行 設定 應用程式 執行中,可以查看執行狀態 錄音檔會在 /sdcard /recorded_calls/. 先修改 AndroidManifest.xml. - PowerPoint PPT Presentation
Citation preview
Android Service -電話錄音
建國科技大學 資管系饒瑞佶
2013/7 V1
Android Service -電話錄音• 需要–BroadcastReceiver•廣播是用來通知系統,動作或資料處理已經完成了•例如收到一封簡訊、電池用量有變化或者有人打電話進來等等
–Service
Android Service -電話錄音• 啟動本 App 或是開機後,服務將自動執行• 設定應用程式執行中,可以查看執行狀態
• 錄音檔會在 /sdcard/recorded_calls/
先修改 AndroidManifest.xml
<!-- 電話狀態監聽 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!-- 開啟廣播 --><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/><!-- 錄音權限 --><uses-permission android:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Main.java
註冊在AndroidManifest.
xml我是可以處理這個BroadcastReceiver的人之一
MyBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override public void onReceive(Context arg0, Intent arg1) { // TODO 自動產生的方法 Stub Intent service = new Intent(arg0,PhoneListenerService.class); arg0.startService(service); }}
PhoneListenerService.java
public class PhoneListenerService extends Service {
@Override public IBinder onBind(Intent intent) { // TODO 自動產生的方法 Stub return null; }}
PhoneListenerService.java
PhoneListenerService.javaprivate class TeleListine extends PhoneStateListener { private String mobile; // 來電 private MediaRecorder recorder; // 錄音 private File autoFile; // 存檔 private boolean recoder; // 是否錄音 @Override public void onCallStateChanged(int state,String incomingNumber) { try{ switch(state) { case TelephonyManager.CALL_STATE_IDLE : if(recoder) { recorder.stop(); recorder.release(); recoder = false; } break;
PhoneListenerService.java
PhoneListenerService.java case TelephonyManager.CALL_STATE_RINGING : mobile = incomingNumber; break; default : break; } }catch(Exception e) { e.printStackTrace(); } super.onCallStateChanged(state, incomingNumber); } }
再修改 AndroidManifest.xml
<receiver android:name=".MyBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="rfid.ctu.receiver" /> </intent-filter> </receiver> <service android:name=".PhoneListenerService" />
加入撥放列表
// 列出所有錄音檔 mFileList = (ListView) findViewById(R.id.listView1); String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recorded_calls"; File file=new File(filePath); File[] files = file.listFiles(); for(File mCurrentFile:files){ mFileName.add(mCurrentFile.getName()); } ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mFileName); mFileList.setAdapter(mAdapter); //點選後撥放 mFileList.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {String movieurl = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recorded_calls/" + mFileName.get(arg2).toString(); Intent intent = new Intent(android.content.Intent.ACTION_VIEW); Uri data = Uri.parse(movieurl); intent.setDataAndType(data,"video/3gpp"); startActivity(intent);} });