Ho un file video nella mia directory esterna. come posso caricarlo sulla variabile inputstream. Per ora sto leggendo il file nella cartella res/raw ma voglio leggerlo dalla sdcard. anche io non so circa il nome del file, ma il suo percorso sarà ricevuto attraverso l'intento. verificare il seguente codiceCarica un file da una memoria esterna a Inputstream
public class SonicTest extends Activity
{
VideoView videoView;
String uri;
InputStream soundFile;
File file;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void play(View view)
{
new Thread(new Runnable()
{
public void run()
{
float speed= (float) 1.0;
float pitch= (float) 1.5;
float rate= (float) 1.0;
uri= Environment.getExternalStorageDirectory().toString();
uri=uri+"/video.3gp";
AndroidAudioDevice device = new AndroidAudioDevice(22050, 1);
Sonic sonic = new Sonic(22050, 1);
byte samples[] = new byte[4096];
byte modifiedSamples[] = new byte[2048];
InputStream soundFile = null;
//soundFile = getContentResolver().openInputStream(Uri.parse(uri));
soundFile=getResources().openRawResource(R.raw.video3);
Log.i("testing","check if SoundFile is correct "+soundFile);
int bytesRead;
if(soundFile != null) {
sonic.setSpeed(speed);
sonic.setPitch(pitch);
sonic.setRate(rate);
do {
try {
bytesRead = soundFile.read(samples, 0, samples.length);
} catch (IOException e) {
e.printStackTrace();
return;
}
if(bytesRead > 0) {
sonic.putBytes(samples, bytesRead);
} else {
sonic.flush();
}
int available = sonic.availableBytes();
if(available > 0) {
if(modifiedSamples.length < available) {
modifiedSamples = new byte[available*2];
}
sonic.receiveBytes(modifiedSamples, available);
device.writeSamples(modifiedSamples, available);
}
} while(bytesRead > 0);
device.flush();
}
}
}).start();
}}
Tutte e tre le risposte non riescono a capire che cosa un URI è e che non sono sempre un percorso di file. Se avessi il percorso del file lo avresti capito da solo, ma le risposte postate non rispondono alla domanda vera e propria. – BooleanCheese