Kadang
kita membutuhkan music yang distreaming langsung dari internet
dengan alasan lebih banyak lagu dan mengurangi ukuran APK dengan
tidak memaketkan file lagu ke dalam APK. Berikut salah satu teknik
untuk streaming audio (lagu) dari internet menggunakan Android:
private MediaPlayer mediaPlayer; private ToggleButton toggleOnoff; private String audioURL; boolean initialAudio = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); audioURL = "https://ia801005.us.archive.org/17/items/iwan_fals_album_emas/04___KUMENANTI_SEORANG_KEKA.MP3"; mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setLooping(true); mediaPlayer.setVolume(1, 1); if (initialAudio) { new PlayerTask().execute(audioURL); } else { if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); } } toggleOnoff = (ToggleButton) findViewById(R.id.toggleOnoff); toggleOnoff.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); } } else { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } } }); } @Override public void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.reset(); mediaPlayer.release(); mediaPlayer = null; } } // ============================================================== class PlayerTask extends AsyncTask<string, boolean, void> { private ProgressDialog progress = ProgressDialog.show(MainActivity.this, null, getString(R.string.buffering), true); @Override protected Boolean doInBackground(String... params) { Boolean prepared; try { mediaPlayer.setDataSource(params[0]); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { initialAudio = true; mediaPlayer.stop(); mediaPlayer.reset(); } }); mediaPlayer.prepare(); prepared = true; } catch (Exception e) { prepared = false; e.printStackTrace(); } return prepared; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (result) { mediaPlayer.start(); initialAudio = false; toggleOnoff.setChecked(true); } if (progress.isShowing()) { progress.cancel(); } } }
Jangan lupa tambahkan <uses-permission
android:name="android.permission.INTERNET"/> pada AndroidManifest.xml untuk bisa akses internet.
Source code project lengkapnya bisa didownload diGithub Andevid.
Referensi Android Developer dan Stackoverflow.com. Semoga bermanfaat.
Level: Beginner
Source code project lengkapnya bisa didownload di
Referensi Android Developer dan Stackoverflow.com. Semoga bermanfaat.
Level: Beginner
No comments:
Post a Comment