2017-07-30 4 views
1

Certains de mon code:Comment générer plusieurs fichiers avec un enregistreur multimédia?

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

Liste et adaptateur pour montrer les fichiers

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

outPutFile est une chaîne.

+0

Je veux être en mesure d'enregistrer plusieurs fichiers. –

+0

Enregistrez un fichier. Arrête d'enregistrer. Enregistrez le deuxième fichier. Arrête d'enregistrer. Enregistrez le troisième fichier. Arrête d'enregistrer. Etc. – CommonsWare

+0

La façon dont le code est écrit remplace maintenant l'ancien fichier lors de l'enregistrement d'une autre heure, corrigez-moi si je me trompe ... –

Répondre

1

Vous devez modifier le nom de fichier à chaque fois que vous souhaitez enregistrer un nouveau, de sorte que vous pouvez ajouter datetime au nom de fichier pour créer des noms uniques:

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

pour montrer les éléments que vous devez créer une base de données pour sauver les noms de fichiers et d'obtenir les noms de fichiers de base de données lorsque vous souhaitez afficher la liste d'enregistrement

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

et pour insérer des données dans l'utilisation de base de données:

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

alors pour lire les noms de l'utilisation de la base de données: ces lignes

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

et enfin les ajouter à votre liste adaptateur:

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

Merci beaucoup! J'ai un problème: le nom des fichiers apparaît comme "0", j'ai dû écrire le String fileName = cursor.getInt (0); as String nomFichier = String.valueOf (cursor.getInt (0)); une idée? –

+0

oui, j'ai fait une erreur dans mon code, vous devez utiliser: fileName = cursor.getString (0); s'il vous plaît upvote si cela vous a été utile – Nobody8

+0

Cela fait, il donne le nom et le chemin ... Comment puis-je accéder aux fichiers pour les jouer avec la classe mediaplayer? Supposons que je veux utiliser onclicklistener dans la liste, en utilisant getposition? –