Harici dizimde bir video dosyası var. Bunu inputstream değişkenine nasıl yükleyebilirim. Res/raw klasöründe dosya okuyor olduğum için ama sdcard'dan okumak istiyorum. Ayrıca dosyanın adı hakkında bilmiyorum ama onun yolu yoluyla niyetini alınacaktır. Sonra akışından okuyabilirHarici bir dosyadan Inputstream'e bir dosya yükleyin.
File file = new File(Uri.toString());
FileInputStream fileInputStream = new FileInputStream(file);
deneyin Aşağıdaki kodu
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();
}}
Her üç cevaplar URI ne olduğunu anlamak için başarısız ve her zaman bir dosya yolu olmadığını. Dosya yoluna sahip olsaydınız, bunu kendiniz çözdünüz, ancak yayınlanan cevaplar asıl soruya cevap vermiyor. – BooleanCheese