Come aggiungere un file a un progetto Android, distribuirlo sul dispositivo e aprirlo?

Ho un progetto Android (2.2) in Eclipse (Helios). Vorrei aggiungere un file MP3 al progetto in modo che il file MP3 venga distribuito sul dispositivo insieme all'applicazione.

Vorrei quindi aprire il file come un object File , il che significa che dovrei conoscere il path completo (?) Al file sul dispositivo, ma non so come i routes sono specificati in Android.

  • Accesso negato durante la creazione di una chiavetta per l'applicazione Android
  • Tutorial per personalizzare la schermata di block in Android
  • com.android.ddmlib.InstallException: Imansible stabilire la session di reazione nativa
  • Qual è la differenza tra RxJava 2 Cancellabile e Disposable?
  • Chiunque fa C2DM su Android
  • Android, tabs senza Actionbar
  • Modificare il metodo di input di dispositivo Android in modo programmato android
  • come get una data formattata come millisecondi?
  • Sicurezza del database Sqlite
  • Qual è la differenza tra Activity.runOnUiThread (azione runnable) e Handler.post ()?
  • Come integrare il login Gmail nell'applicazione Android?
  • Imansible eseguire dex: più file dex definiscono l'arrays Lcom / myapp / R $;
  • 2 Solutions collect form web for “Come aggiungere un file a un progetto Android, distribuirlo sul dispositivo e aprirlo?”

    Apparentemente c'è un bug in Froyo che impedisce la riproduzione WAV.
    I file audio devono essere inseriti nella directory "res / raw" del tuo progetto. Quindi utilizzare l'id per riprodurlo (o tentare di riprodurlo)

     MediaPlayer mp = MediaPlayer.create (context, R.raw.sound_file_1);
     mp.start ();
    

    Info: http://developer.android.com/guide/topics/media/index.html
    Esempio (mp3): http://www.helloandroid.com/tutorials/musicdroid-audio-player-part-i

    Ok, ho visto questo sulla sorgente di un'altra projet, quindi non ho veramente trovato, ma funziona.

    Per aggiungere un file a un progetto e poi utilizzarlo, è necessario mettere il file (binario, xml o altro) nella cartella degli asset del progetto.

    In questo esempio copierò l'asset nel file system, per poterlo accedere più tardi come qualsiasi altro file utente. È anche ansible accedere direttamente agli asset, date un'occhiata a Risorse nella documentazione.

     public void copyfile(String fileName) { if (!new File(fileName).exists()){ try { InputStream localInputStream = getAssets().open(fileName); FileOutputStream localFileOutputStream = getBaseContext().openFileOutput(fileName, MODE_PRIVATE); byte[] arraysOfByte = new byte[1024]; int offset; while ((offset = localInputStream.read(arraysOfByte))>0) { localFileOutputStream.write(arraysOfByte, 0, offset); } localFileOutputStream.close(); localInputStream.close(); // The next 3 lines are because I'm copying a binary that I plan // to execute, so I need it to have execute permission. StringBuilder command = new StringBuilder("chmod 700 "); command.append(basedir + "/" + paramString); Runtime.getRuntime().exec(command.toString()); Log.d(TAG, "File " + paramString + " copied successfully."); } catch (IOException localIOException) { localIOException.printStackTrace(); return; } } else Log.d(TAG, "No need to copy file " + paramString); } 

    Credo che ci sia probabilmente un modo migliore per copiare il file, ma questo funziona e non rallenta la mia applicazione anche se è chiamato da onCreate (tutti i file che ho copiato sono al di sotto di 100kb, quindi per i file più grandi, probabilmente vuoi thread separato)

    Ecco come get il path ai file:

     String path = getBaseContext().getFilesDir().getAbsolutePath(); 

    Se vuoi scrivere il file in un altro path, ad esempio "/ sdcard / DCIM / appPictures", credo di poter utilizzare questo codice:

     FileOutputStream outFile = FileOutputStream("/sdcard/DCIM/appPictures/" + fileName); 

    e quindi copiarlo byte come nell'esempio precedente.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.