Presentation is loading. Please wait.

Presentation is loading. Please wait.

Android Service -電話錄音 建國科技大學 資管系 饒瑞佶 2013/7 V1. Android Service -電話錄音 需要 – BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經 完成了 例如收到一封簡訊、電池用量有變化或者 有 人打電話進來 等等 –

Similar presentations


Presentation on theme: "Android Service -電話錄音 建國科技大學 資管系 饒瑞佶 2013/7 V1. Android Service -電話錄音 需要 – BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經 完成了 例如收到一封簡訊、電池用量有變化或者 有 人打電話進來 等等 –"— Presentation transcript:

1 Android Service -電話錄音 建國科技大學 資管系 饒瑞佶 2013/7 V1

2 Android Service -電話錄音 需要 – BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經 完成了 例如收到一封簡訊、電池用量有變化或者 有 人打電話進來 等等 – Service

3 Android Service -電話錄音 啟動本 App 或是開機後,服務將自動執行 設定  應用程式  執行中,可以查看執行 狀態 錄音檔會在 /sdcard/recorded_calls/

4 先修改 AndroidManifest.xml

5 Main.java public class Main extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent receiver = new Intent("rfid.ctu.receiver"); this.sendBroadcast(receiver); } 註冊在 AndroidManifest.xml 我是可以處理這個 BroadcastReceiver 的 人之一

6 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); }

7 PhoneListenerService.java public class PhoneListenerService extends Service { @Override public IBinder onBind(Intent intent) { // TODO 自動產生的方法 Stub return null; }

8 PhoneListenerService.java @Override public void onCreate() { TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(new TeleListine(), PhoneStateListener.LISTEN_CALL_STATE); super.onCreate(); }

9 PhoneListenerService.java private 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;

10 PhoneListenerService.java case TelephonyManager.CALL_STATE_OFFHOOK : // 接聽電話 recorder = new MediaRecorder(); //MIC 只錄自己的聲音,如果要錄雙方聲音,需改用 MediaRecorder.AudioSource.VOICE_CALL recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); String root_directory = Environment.getExternalStorageDirectory() + "/recorded_calls"; File root_file = new File(root_directory); if(!root_file.exists()) { root_file.mkdir(); } String record_call = root_directory + "/" + mobile + "_" + System.currentTimeMillis() + ".3gp"; File autoFile = new File(record_call); if(!autoFile.exists()) { autoFile.createNewFile(); } //autoFile = new File(getCacheDir(),mobile+ "_" + System.currentTimeMillis() + ".3gp"); recorder.setOutputFile(autoFile.getAbsolutePath()); recorder.prepare(); recorder.start(); recoder = true; break;

11 PhoneListenerService.java case TelephonyManager.CALL_STATE_RINGING : mobile = incomingNumber; break; default : break; } }catch(Exception e) { e.printStackTrace(); } super.onCallStateChanged(state, incomingNumber); }

12 再修改 AndroidManifest.xml

13 加入撥放列表

14 // 列出所有錄音檔 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 mAdapter = new ArrayAdapter (this, android.R.layout.simple_expandable_list_item_1,mFileName); mFileList.setAdapter(mAdapter); // 點選後撥放 mFileList.setOnItemClickListener(new OnItemClickListener(){ @Override public 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); } });


Download ppt "Android Service -電話錄音 建國科技大學 資管系 饒瑞佶 2013/7 V1. Android Service -電話錄音 需要 – BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經 完成了 例如收到一封簡訊、電池用量有變化或者 有 人打電話進來 等等 –"

Similar presentations


Ads by Google