標題:
MyRecorder
[打印本頁]
作者:
ray
時間:
2012-11-19 20:44
標題:
MyRecorder
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFFFF">
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/RecBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/RecLabel">
</Button>
<Button
android:id="@+id/StopBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/StopLabel">
</Button>
<Button
android:id="@+id/PlayBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/PlayLabel">
</Button>
<Button
android:id="@+id/DelBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/DelLabel">
</Button>
</LinearLayout>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000">
</TextView>
</LinearLayout>
複製代碼
作者:
ray
時間:
2012-11-19 20:44
strings.xml
<resources>
<string name="app_name">MyRecorder</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
<string name="RecLabel">錄音</string>
<string name="StopLabel">停止</string>
<string name="PlayLabel">播放</string>
<string name="DelLabel">刪除</string>
</resources>
複製代碼
作者:
ray
時間:
2012-11-19 21:05
private TextView myTextView;
private String strTempFile = "MyVoice_";
private File myRecAudioFile;
private File myRecAudioDir;
private File myPlayFile;
複製代碼
作者:
ray
時間:
2012-11-19 21:11
private ListView myListView;
private ArrayList<String> recordFiles;
private ArrayAdapter<String> adapter;
private MediaRecorder mMediaRecorder;
private boolean sdCardExist;
private boolean isStopRecord;
複製代碼
作者:
ray
時間:
2012-11-19 21:16
<ListView
android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF000000">
</ListView>
複製代碼
作者:
ray
時間:
2012-11-19 21:18
recButton = (Button) findViewById(R.id.RecBtn);
stopButton = (Button) findViewById(R.id.StopBtn);
playButton = (Button) findViewById(R.id.PlayBtn);
delButton = (Button) findViewById(R.id.DelBtn);
myListView = (ListView) findViewById(R.id.ListView01);
myTextView = (TextView) findViewById(R.id.TextView01);
複製代碼
作者:
ray
時間:
2012-11-19 21:21
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="#FFFFFFFF" />
複製代碼
作者:
ray
時間:
2012-11-19 21:30
//getRecordFiles();
adapter = new ArrayAdapter<String>(this,R.layout.list,recordFiles);
myListView.setAdapter(adapter);
複製代碼
作者:
ray
時間:
2012-11-21 19:04
[attach]634[/attach]
作者:
ray
時間:
2012-11-21 19:18
sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
作者:
ray
時間:
2012-11-21 19:22
if(sdCardExist)
myRecAudioDir = Environment.getExternalStorageDirectory();
複製代碼
作者:
ray
時間:
2012-11-21 19:35
private void getRecordFiles()
{
recordFiles = new ArrayList<String>();
if(sdCardExist)
{
File[] files = myRecAudioDir.listFiles();
if(files != null)
{
for(int i=0;i<files.length;i++)
{
if(files[i].getName().indexOf(".") >= 0)
{
String fileS = files[i].getName().substring(files[i].getName().indexOf("."));
if(fileS.toLowerCase().equals(".amr"))
{
recordFiles.add(files[i].getName());
}
}
}
}
}
}
複製代碼
作者:
ray
時間:
2012-11-21 19:54
recButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
}
}
);
複製代碼
作者:
ray
時間:
2012-11-21 20:05
try
{
}
catch(Exception e)
{
e.printStackTrace();
}
複製代碼
作者:
ray
時間:
2012-11-21 20:13
if(!sdCardExist)
{
Toast.makeText(MainActivity.this, "please insert sd card...", Toast.LENGTH_LONG).show();
}
複製代碼
作者:
ray
時間:
2012-11-21 20:20
myRecAudioFile = File.createTempFile(strTempFile, ".amr", myRecAudioDir);
複製代碼
作者:
ray
時間:
2012-11-21 20:27
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
複製代碼
作者:
ray
時間:
2012-11-21 20:34
mMediaRecorder.setOutputFile(myRecAudioFile.getAbsolutePath());
mMediaRecorder.prepare();
mMediaRecorder.start();
複製代碼
作者:
ray
時間:
2012-11-21 20:39
myTextView.setText("錄音中...");
recButton.setEnabled(false);
stopButton.setEnabled(true);
playButton.setEnabled(false);
delButton.setEnabled(false);
isStopRecord = false;
複製代碼
作者:
ray
時間:
2012-11-21 20:43
stopButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
}
});
複製代碼
作者:
ray
時間:
2012-11-21 20:56
if(myRecAudioFile != null)
{
mMediaRecorder.stop();
adapter.add(myRecAudioFile.getName());
mMediaRecorder.release();
}
複製代碼
作者:
ray
時間:
2012-11-21 21:03
mMediaRecorder = null;
myTextView.setText("Stop:"+myRecAudioFile.getName());
recButton.setEnabled(true);
stopButton.setEnabled(false);
playButton.setEnabled(true);
delButton.setEnabled(true);
isStopRecord = true;
複製代碼
作者:
ray
時間:
2012-11-21 21:05
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
複製代碼
作者:
ray
時間:
2012-11-21 21:28
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> av,View v,int arg1,long arg2)
{}
});
複製代碼
作者:
ray
時間:
2012-11-21 21:28
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> av,View v,int arg1,long arg2)
{}
});
複製代碼
作者:
ray
時間:
2012-11-21 21:35
playButton.setEnabled(true);
delButton.setEnabled(true);
myPlayFile = new File(myRecAudioDir.getAbsoluteFile()
+ File.separator
+ ((CheckedTextView)v).getText());
複製代碼
作者:
ray
時間:
2012-11-21 21:37
myTextView.setText("Choice:"+((CheckedTextView)v).getText());
複製代碼
作者:
ray
時間:
2012-11-21 21:41
playButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
if(myPlayFile != null && myPlayFile.exists())
{
MediaPlayer mplay = MediaPlayer.create(null, Uri.fromFile(myPlayFile));
mplay.start();
}
}
});
複製代碼
作者:
ray
時間:
2012-11-23 18:49
delButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
if(myPlayFile != null)
{
adapter.remove(myPlayFile.getName());
if(myPlayFile.exists())
{
myPlayFile.delete();
myTextView.setText("delete ok...");
}
else
myTextView.setText("file not found...");
}
}
});
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2