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.

  • Issue di Pitch and Roll Android
  • Come utilizzare un parametro di output in Java?
  • Ubuntu 16.04 - Genymotion: / dev / hw_random non trovato
  • Come get i log di crash Android?
  • Mostra il DialogFragment da onActivityResult
  • Utilizzo di SDK non associato con un file di certificato SSL per connettersi al server LDAP nell'applicazione Android
  • Come posizionare il cursore a destra in EditText
  • Come sapere che l'attività è stata finita?
  • Qual è il Corretto BeaconLayout per i fari Estimote e Gimbal
  • mockito - derisione di un'interface - lancio di NullPointerException
  • carichi da spinner sqlite con text e valore
  • ERRORE: '__NDK_FPABI__' non elenca un tipo
  • 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.