2017-07-30 46 views
1

我的一些代码:如何用媒体记录器生成多个文件?

outPutFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp"; 

    mediaRecorder = new MediaRecorder(); 
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    mediaRecorder.setOutputFile(outPutFile); 

列表和适配器显示文件

listRecord.addAll(Arrays.asList(outPutFile)); 
    listAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, listRecord); 
    recordList.setAdapter(listAdapter); 

outPutFile是一个字符串。

+0

我希望能够录制多个文件。 –

+0

记录一个文件。停止录制。记录第二个文件。停止录制。记录第三个文件。停止录制。等等。 – CommonsWare

+0

现在编写代码的方式是在录制另一个时间时替换旧文件,纠正我,如果我错了... –

回答

1

你必须要录制一个新的每次更改文件名,这样你就可以添加日期时间为文件名,创造出独特的名称:用于显示项目

String dateTime = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss aa",Locale.getDefault()).format(new Date()); 
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recordings/recording -" + dateTime + ".3gp"; 

你必须创建一个数据库来保存文件名,并从数据库文件名时要显示的记录列表

String DIR_DATABASE = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recordings"; 
String sqliteQuery= "CREATE TABLE IF NOT EXISTS Recordings (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , fileName VARCHAR)" 
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "db.sqlite", null); 
database.execSQL(sqliteQuery); 

和将数据插入到数据库的使用:

SQLiteDatabase database = SQLiteDatabase.openDatabase(DIR_DATABASE + "db.sqlite", null, 0); 
ContentValues values = new ContentValues(); 
       values.put("fileName", outputFile); 
       database.insert("Recordings", "", values); 

然后读取文件名从数据库中使用此行:

Cursor cursor = database.rawQuery("SELECT fileName FROM Recordings", null); 
ArrayList<String> fileNames = new ArrayList<>(); 
while (cursor.moveToNext()) { 

    String fileName = cursor.getString(0); 
    fileNames.add(fileName); 
} 
cursor.close(); 
database.close(); 

,最后将它们添加到您的列表适配器:

listRecord.addAll(fileNames); 
listAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, listRecord); 
recordList.setAdapter(listAdapter); 
+1

非常感谢!我有一个问题:文件的名称显示为“0”,我不得不写入String fileName = cursor.getInt(0); as String fileName = String.valueOf(cursor.getInt(0)); 有什么想法? –

+0

是的,我在我的代码中犯了一个错误,你必须使用:fileName = cursor.getString(0);请注意是否对您有帮助 – Nobody8

+0

这是否提供了名称和路径......如何访问使用mediaplayer类播放文件的文件?假设我想在列表上使用onclicklistener,使用getposition? –

相关问题