android service -電話錄音

14
Android Service 電電電電 電電電電電電 電電電 電電電 2013/7 V1

Upload: violet-best

Post on 30-Dec-2015

61 views

Category:

Documents


2 download

DESCRIPTION

Android Service -電話錄音. 建國科技大學 資管系 饒瑞佶 2013/7 V1. Android Service -電話錄音. 需要 BroadcastReceiver 廣播是用來通知系統,動作或資料處理已經完成了 例如收到一封簡訊、電池用量有變化或者 有人打電話進來 等等 Service. Android Service -電話錄音. 啟動本 App 或是開機後,服務將自動執行 設定  應用程式  執行中,可以查看執行狀態 錄音檔會在 /sdcard /recorded_calls/. 先修改 AndroidManifest.xml. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Android Service -電話錄音

Android Service -電話錄音

建國科技大學 資管系饒瑞佶

2013/7 V1

Page 2: Android Service -電話錄音

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

–Service

Page 3: Android Service -電話錄音

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

• 錄音檔會在 /sdcard/recorded_calls/

Page 4: Android Service -電話錄音

先修改 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"/>

Page 5: Android Service -電話錄音

Main.java

註冊在AndroidManifest.

xml我是可以處理這個BroadcastReceiver的人之一

Page 6: Android Service -電話錄音

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

Page 7: Android Service -電話錄音

PhoneListenerService.java

public class PhoneListenerService extends Service {

@Override public IBinder onBind(Intent intent) { // TODO 自動產生的方法 Stub return null; }}

Page 8: Android Service -電話錄音

PhoneListenerService.java

Page 9: Android Service -電話錄音

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;

Page 10: Android Service -電話錄音

PhoneListenerService.java

Page 11: Android Service -電話錄音

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

Page 12: Android Service -電話錄音

再修改 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" />

Page 13: Android Service -電話錄音

加入撥放列表

Page 14: Android Service -電話錄音

// 列出所有錄音檔 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);} });