Почему я не могу парсить аудио файл пряма с DropBox?
Я не смог получить прямые ссылки на аудио в инете, и наткнулся на такой код где чувак воспроизводит аудио прямо с DropBox, я решил повторить и добавил аудио в свой dropBox, вот ссылка на аудио: "https://www.dropbox.com/s/4yirfyw0m18z53m/Mr_Kitty_-_After_Dark_61741935.mp3?dl=0" При запуске у меня выводиться такая ошибка в логах:" E/MediaPlayerNative: error (1, -2147483648) E/MediaPlayer: Error (1,-2147483648)" Скажите пожалуйста в чем проблема?? Я смог запустить другую музыку с открытой ссылкой, а эту нет :( Если знаете как получить прямые ссылки на аудио, скажите пожалуйста, а то те аудио которые я хочу не могу найти. Вот мой код:
package com.application.mp3internet;
import java.io.IOException;
import android.app.Activity;
import android.content.ContentUris;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class MainActivity extends Activity implements OnPreparedListener,
OnCompletionListener {
final String LOG_TAG = "myLogs";
final String DATA_HTTP = "https://www.dropbox.com/s/4yirfyw0m18z53m/Mr_Kitty_-_After_Dark_61741935.mp3?dl=0";
MediaPlayer mediaPlayer;
AudioManager am;
CheckBox chbLoop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
am = (AudioManager) getSystemService(AUDIO_SERVICE);
chbLoop = (CheckBox) findViewById(R.id.chbLoop);
chbLoop.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (mediaPlayer != null)
mediaPlayer.setLooping(isChecked);
}
});
}
public void onClickStart(View view) {
releaseMP();
try {
switch (view.getId()) {
case R.id.btnStartHttp:
Log.d(LOG_TAG, "start HTTP");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(DATA_HTTP);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.d(LOG_TAG, "prepareAsync");
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();
break;
}
} catch (IOException e) {
e.printStackTrace();
}
if (mediaPlayer == null)
return;
mediaPlayer.setLooping(chbLoop.isChecked());
mediaPlayer.setOnCompletionListener(this);
}
private void releaseMP() {
if (mediaPlayer != null) {
try {
mediaPlayer.release();
mediaPlayer = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void onClick(View view) {
if (mediaPlayer == null)
return;
switch (view.getId()) {
case R.id.btnPause:
if (mediaPlayer.isPlaying())
mediaPlayer.pause();
break;
case R.id.btnResume:
if (!mediaPlayer.isPlaying())
mediaPlayer.start();
break;
case R.id.btnStop:
mediaPlayer.stop();
break;
case R.id.btnBackward:
mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() - 3000);
break;
case R.id.btnForward:
mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() + 3000);
break;
}
}
@Override
public void onPrepared(MediaPlayer mp) {
Log.d(LOG_TAG, "onPrepared");
mp.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(LOG_TAG, "onCompletion");
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMP();
}
}