Andri Kristanto,2008. Perancangan Sistem Informasi dan Aplikasinya. Gava Media:
Yogyakarta [19 Mei 2018]
Anonim.Mengenal Android Studio.
https://developer.android.com/studio/intro/index.html [7 Juni 2018]
https://id.wikipedia.org/wiki/Android (sistem_operasi) [25 April 2018]
Anonim.Pengertian android dan java
http://www.jadibaru.com/android/pengenalan-android-studio-2/ [25 April 2018]
Arif Wicaksana. Pengertian Use Case.
https://medium.com/@arifwicaksanaa/pengertian-use-case-a7e576e1b6bf [11 Juni 2018]
Arifianto, Teguh. (2011). Membuat Interface Aplikasi Android Lebih Keren dengan LWUIT. Yogyakarta: Andi Publisher [7 Juni 2018]
Bima Injam Pamungkas. Naskah Publikasi Desain dan Implementasi Pemutar Musik Berbasis Android.http://repository.amikom.ac.id/files/Publikasi_10.02.7799 [23 April 2018]
Indrajani. (2011). Perancangan Basis Data dalam All in 1, PT. Elex Media Komputindo, Jakarta [ 7 Juni 2018]
Jamalus. 1988. Panduan Pengajaran Buku Pengajaran Musik Melalui Pengalaman Musik. Jakarta: Proyek Pengembangan Lembaga Pendidikan Tenga
Kependidikan. [ 7 Juni 2018]
Juhara, Zamrony P. 2016.Panduan Lengkap Pemrograman Adnroid. Yogyakarta:
Penerbit Andi. [19 Mei 2018]
Kenneth, Julie E Kendall. 2015.Analisis Dan Perancangan Sistem Edisi Kelima [9 Mei 2018]
Nazruddin Safaat H, 2011. Pemrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android. Informatika, Bandung. [19 Mei 2018]
LAMPIRAN
1. Listing Program
SplashScreenActivity.java
package com.example.acer.musicplayer;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SplashScreenActivity extends AppCompatActivity { public static int time = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable() { @Override
public void run() { Intent i = new
Intent(SplashScreenActivity.this, MainActivity.class);
startActivity(i);
finish();
} }, time);
} }
MainActivity.java
public class MainActivity extends AppCompatActivity { private ArrayList<SongInfo> _songs = new
ArrayList<SongInfo>();
ArrayList song,album_ID ; private List<String> title;
RecyclerView recyclerView;
SeekBar seekBar;
String album;
SongAdapter songAdapter;
MediaPlayer mediaPlayer;
MaterialSearchView searchView;
ListView lstView;
public static final int RUNTIME_PERMISSION_CODE = 7;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.RecycleView);
seekBar = findViewById(R.id.Seekbar);
song = new ArrayList();
album_ID = new ArrayList();
title = new ArrayList();
songAdapter = new SongAdapter(this,_songs);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),linearLayoutMa nager.getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(songAdapter);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Music");
toolbar.setTitleTextColor(Color.parseColor("#ffffff"));
lstView = findViewById(R.id.recycler_view_fragment);
songAdapter.setOnItemClickListener(new SongAdapter.OnItemClickListener() {
@Override
public void onItemClick(final Button b, View v, final SongInfo obj, int position) {
Intent detail = new
Intent(MainActivity.this,DetailMusicActivity.class);
detail.putExtra("url", obj.getSongUrl());
detail.putExtra("album", obj.albumID);
detail.putExtra("position", position);
detail.putStringArrayListExtra("array_song", song);
searchView = findViewById(R.id.search_view);
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
List<String> lstFound = new
lstView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?>
adapterView, View view, int i, long l) {
String selectedItemText = (String)
public class MyThread extends Thread{
@Override
}
private void CheckPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if
32
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){
Uri ur = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC +"!=0";
SongInfo s = new
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_item, menu);
MenuItem item = menu.findItem(R.id.action_search);
searchView.setMenuItem(item);
ArrayList<SongInfo> _songs;
Context context;
OnItemClickListener onItemClickListener;
SongAdapter(Context context, ArrayList<SongInfo> _songs){
this.context = context;
this._songs = _songs;
}
public interface OnItemClickListener{
void onItemClick(Button b, View v ,SongInfo obj, int position);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener = onItemClickListener;
}
@Override
public SongHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
public void onBindViewHolder(@NonNull final SongHolder holder, final int position) {
final SongInfo c = _songs.get(position);
holder.songName.setText(c.songName);
holder.artistName.setText(c.artistName);
holder.btnAction.setOnClickListener(new View.OnClickListener() {
}
public class SongHolder extends RecyclerView.ViewHolder { TextView songName,artistName;
public class DetailMusicActivity extends AppCompatActivity { String url, albumID, Artist, Judul, play, S_shuffle;
MediaPlayer mediaPlayer;
TextView Txt_Artist, Txt_Judul, Txt_wkt_total, Txt_wkt_skrng;
ImageView image,next,previous,fast,rewind,shuffle;
FloatingActionButton fab;
SeekBar seekbar;
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_music);
image = findViewById(R.id.Image);
Txt_wkt_total = findViewById(R.id.Txt_wkt_total);
Txt_wkt_skrng = findViewById(R.id.Txt_wkt_skrng);
fab = findViewById(R.id.fab);
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
fab.setOnClickListener(new View.OnClickListener() { @Override
next.setOnClickListener(new View.OnClickListener() { @Override
previous.setOnClickListener(new View.OnClickListener() {
32
fast.setOnClickListener(new View.OnClickListener() { @Override
rewind.setOnClickListener(new View.OnClickListener() { @Override
shuffle.setOnClickListener(new View.OnClickListener() {
song = song_shuffle;
album_music = String.valueOf(album_ID.get(position));
song.get(position);
String url_music;
url_music = String.valueOf(song.get(position));
Uri ur = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC +
"!=0";
34
public void playCycle() {
seekbar.setProgress(mediaPlayer.getCurrentPosition());
if (mediaPlayer.isPlaying()) {
handler.removeCallbacks(runnable);
super.onBackPressed();
} }
activity_splash_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.acer.musicplayer.SplashScreenActivi ty"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/back_splash"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:fontFamily="@font/audiowide"
android:text="MUSIC PLAYER"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.acer.musicplayer.MainActivity"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/back_splash"
android:scaleType="centerCrop"/>
<android.support.v7.widget.Toolbar android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:id="@+id/toolbar"
android:background="@color/colorPrimary">
</android.support.v7.widget.Toolbar>
<com.miguelcatalan.materialsearchview.MaterialSearchView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/search_view">
</com.miguelcatalan.materialsearchview.MaterialSearchView>
<ListView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/recycler_view_fragment"
android:scrollbars="vertical"
android:layout_below="@+id/toolbar"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_below="@+id/toolbar">
<android.support.v7.widget.RecyclerView android:layout_width="match_parent"
Activity_detail_music.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF303030"
android:fitsSystemWindows="true"
tools:context="com.example.acer.musicplayer.DetailMusicActivit y">
<ImageView
android:id="@+id/Image"
android:layout_width="match_parent"
android:layout_height="360dp"
android:src="@drawable/default_song_album"
android:scaleType="fitStart" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Txt_Artist"
android:layout_marginBottom="35dp"
android:gravity="center"
<android.support.design.widget.FloatingActionButton android:id="@+id/fab"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:layout_above="@+id/Txt_Artist"
android:layout_alignParentRight="true"
android:layout_margin="10dp"
android:layout_weight="1"
android:id="@+id/shuffle"
android:src="@drawable/ic_repeat" />
<TextView
android:id="@+id/Txt_Artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/Txt_Judul"
android:layout_marginLeft="8dp"
android:text="Daft Punk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/Seekbar"
android:layout_margin="8dp"
android:text="Dance On The Floor"
android:textColor="#dcdcdc"
31
tools:text="Dance On The Floor" />
<SeekBar
android:id="@+id/Seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/Txt_wkt_skrng" />
<TextView
android:id="@+id/Txt_wkt_skrng"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:text="00:00"
android:textAppearance="@style/TextAppearance.AppCompat.Captio n"
android:textColor="#afafaf"
tools:text="02:30" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Txt_wkt_total"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_margin="10dp"
android:text="00:00"
android:textAppearance="@style/TextAppearance.AppCompat.Captio n"
android:textColor="#afafaf"
tools:text="02:30" />
</RelativeLayout>
33
35