台灣最大程式設計社群網站
線上人數
1327
 
會員總數:246740
討論主題:190153
歡迎您免費加入會員
討論區列表 >> Android APP 開發 >> 以背景服務的方式錄製聲音
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
以背景服務的方式錄製聲音
價值 : 50 QP  點閱數:1982 回應數:4
樓主

youngman
門外漢
0 26
423 30
發送站內信

請問一下如何以"背景服務"的方式錄製聲音???
可否麻煩各位指點一下 謝謝!!!

搜尋相關Tags的文章: [ 背景服務 ] , [ 常駐 ] , [ 錄音 ] ,
本篇文章發表於2011-08-12 20:19
1樓
最有價值解答

桓祺
捐贈 VP 給 桓祺 檢舉此回應
Android 背景執行(Service)
大部分使用者在手機上看到的畫面都是前端的程式(Activity),
如果是要在背景執行的程式,則需要寫成Service並繼承android.app.Service,
由於是在背景執行所以是要寫成Service而不是Activity,
因此需在AndroidManifest新增一個Service。
本篇文章回覆於2011-08-26 13:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

桓祺
捐贈 VP 給 桓祺 檢舉此回應
[code]
[Activity]

start=(Button)findViewById(R.id.start);
stop=(Button)findViewById(R.id.stop);

start.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(RecordingActivity.this, RecordingService.class);
startService(intent);
}});
stop.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(RecordingActivity.this, RecordingService.class);
stopService(intent);
}});
[/code]

[code]
[Service]

public class RecordingService extends Service {
private MediaRecorder mediaRecorder = null;

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onStart(Intent intent,int startId)
{

String fileName = "record.amr";
try{
File SDCardpath=Environment.getExternalStorageDirectory();
File myDataPath=new File(SDCardpath.getAbsolutePath()+"/download");

if( !myDataPath.exists() ) myDataPath.mkdirs();

File recodeFile = new File(SDCardpath.getAbsolutePath() + "/download/"+fileName);
mediaRecorder = new MediaRecorder();

//設定音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//設定輸出檔案的格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
//設定編碼格式
mediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//設定錄音檔位置
mediaRecorder.setOutputFile(recodeFile.getAbsolutePath());
mediaRecorder.prepare();
//開始錄音
mediaRecorder.start();
}
catch(IOException e){
e.printStackTrace();
}
super.onStart(intent, startId);
}

@Override
public void onDestroy() {
if(mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
}
super.onDestroy();
}


}
[/code]

要記得加入權限喔。
本篇文章回覆於2011-08-26 14:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

桓祺
捐贈 VP 給 桓祺 檢舉此回應
可以參考:http://hastdio.blogspot.com/HA程式設計
本篇文章回覆於2011-08-26 17:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

youngman
檢舉此回應
感謝~!
本篇文章回覆於2011-08-26 20:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.