Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.70 KB | None | 0 0
  1. package com.example.audioplayer;
  2.  
  3. import android.app.Activity;
  4. import android.content.ComponentName;
  5. import android.content.ContentValues;
  6. import android.content.Intent;
  7. import android.content.ServiceConnection;
  8. import android.content.SharedPreferences;
  9. import android.database.Cursor;
  10. import android.net.Uri;
  11. import android.os.AsyncTask;
  12. import android.os.Bundle;
  13. import android.os.Environment;
  14. import android.os.IBinder;
  15. import android.util.Log;
  16. import android.view.MotionEvent;
  17. import android.view.View;
  18. import android.widget.AdapterView;
  19. import android.widget.ArrayAdapter;
  20. import android.widget.ListView;
  21. import android.widget.ProgressBar;
  22. import android.widget.SeekBar;
  23. import android.widget.TextView;
  24.  
  25. import java.io.File;
  26. import java.sql.Time;
  27. import java.util.ArrayList;
  28.  
  29.  
  30. public class MainActivity extends Activity implements View.OnTouchListener, AdapterView.OnItemClickListener {
  31.  
  32.  
  33. SeekBar seekBar;
  34. ListView listViewMusic;
  35. TextView textViewlastPlay;
  36. TextView currentProgress;
  37. ProgressBar progressBar;
  38. MusicSearch musicSearch;
  39. Uri dbURI = Uri.parse("content://musicdbauth/" + musicdb.DB_TABLE_NAME);
  40. MusicProgress updateMusicProgress;
  41.  
  42. private ServiceConnection mediaServiceConnection;
  43. private service mediaService;
  44. private boolean bound;
  45. private SharedPreferences settings;
  46. final String PREFS_NAME = "settings";
  47. private static String lastPlay = "";
  48. private boolean dbupdate;
  49. private final String TAG = MainActivity.class.getSimpleName();
  50.  
  51. @Override
  52. protected void onCreate(Bundle savedInstanceState) {
  53. Log.i(TAG, "onCreate: ");
  54. super.onCreate(savedInstanceState);
  55. setContentView(R.layout.activity_main);
  56.  
  57. startService(new Intent(this, service.class));
  58.  
  59. settings = getSharedPreferences(PREFS_NAME, 0);
  60. lastPlay = settings.getString("last_play", " ");
  61. textViewlastPlay = (TextView) findViewById(R.id.nowPlay);
  62. textViewlastPlay.setText(lastPlay);
  63.  
  64. progressBar = (ProgressBar) findViewById(R.id.progressBar);
  65. currentProgress = (TextView) findViewById(R.id.cureenttime);
  66.  
  67. seekBar = (SeekBar) findViewById(R.id.seekBar);
  68. seekBar.setOnTouchListener(this);
  69. listViewMusic = (ListView) findViewById(R.id.musiclist);
  70. listViewMusic.setOnItemClickListener(this);
  71.  
  72. musicSearch = new MusicSearch();
  73. if (settings.getBoolean("db_update", true))
  74. musicSearch.execute();
  75. else {
  76. musicSearch.onProgressUpdate();
  77. }
  78.  
  79. mediaServiceConnection = new ServiceConnection() {
  80.  
  81. public void onServiceConnected(ComponentName name, IBinder binder) {
  82. Log.i(TAG, "onServiceConnected: ");
  83. mediaService = ((service.LocalBinder) binder).getService();
  84. bound = true;
  85. if (mediaService.isPlaying()) {
  86. seekBar.setMax(mediaService.duration());
  87.  
  88. }
  89. }
  90.  
  91. public void onServiceDisconnected(ComponentName name) {
  92. Log.i(TAG, "onServiceDisconnected: ");
  93. bound = false;
  94. }
  95. };
  96. bindService(new Intent(this, service.class), mediaServiceConnection, 0);
  97. updateMusicProgress = (MusicProgress) getLastNonConfigurationInstance();
  98. if (updateMusicProgress == null) {
  99. updateMusicProgress = new MusicProgress();
  100. updateMusicProgress.execute();
  101. }
  102. updateMusicProgress.link(this);
  103. }
  104.  
  105. @Override
  106. protected void onDestroy() {
  107. super.onDestroy();
  108. Log.i(TAG, "onDestroy: ");
  109. unbindService(mediaServiceConnection);
  110.  
  111. if (this.isFinishing())
  112. stopService(new Intent(this, service.class));
  113.  
  114. settings = getSharedPreferences(PREFS_NAME, 0);
  115. SharedPreferences.Editor editor = settings.edit();
  116. editor.putBoolean("db_update", false);
  117. editor.apply();
  118. }
  119.  
  120. public Object onRetainNonConfigurationInstance() {
  121. Log.i(TAG, "onRetainNonConfigurationInstance: ");
  122. updateMusicProgress.unLink();
  123. return updateMusicProgress;
  124. }
  125.  
  126.  
  127. static class MusicProgress extends AsyncTask<Void, String, Void> {
  128. MainActivity activity;
  129.  
  130. void link(MainActivity act) {
  131. activity = act;
  132. }
  133.  
  134. void unLink() {
  135. activity = null;
  136. }
  137.  
  138. @Override
  139. protected Void doInBackground(Void... params) {
  140. while (true) {
  141.  
  142. try {
  143. Thread.sleep(1000);
  144. Time time = new Time(0, 0, activity.mediaService.playerProgress() / 1000);
  145. publishProgress(time.toString());
  146.  
  147. } catch (Exception e) {
  148. }
  149. }
  150. }
  151.  
  152. @Override
  153. protected void onProgressUpdate(String... values) {
  154. super.onProgressUpdate(values);
  155. try {
  156. activity.seekBar.setProgress(activity.mediaService.playerProgress());
  157. activity.currentProgress.setText(values[0]);
  158. } catch (Exception e) {
  159.  
  160. }
  161. }
  162.  
  163. }
  164.  
  165.  
  166. public void onClickStart(View v) {
  167. Log.i(TAG, "onClickStart: ");
  168. mediaService.playerResume();
  169. }
  170.  
  171. public void onClickStop(View v) {
  172. Log.i(TAG, "onClickStop: ");
  173. mediaService.playerStop();
  174. }
  175.  
  176. @Override
  177. public boolean onTouch(View v, MotionEvent event) {
  178. mediaService.seekTo(seekBar.getProgress());
  179. Log.i(TAG, "onTouch: ");
  180. return false;
  181. }
  182.  
  183. class MusicSearch extends AsyncTask<Void, Void, Void> {
  184.  
  185. @Override
  186. protected void onPreExecute() {
  187. super.onPreExecute();
  188. listViewMusic.setVisibility(View.INVISIBLE);
  189. progressBar.setVisibility(View.VISIBLE);
  190. }
  191.  
  192. @Override
  193. protected Void doInBackground(Void... params) {
  194.  
  195. File filepath = Environment.getExternalStorageDirectory();
  196. search(filepath.listFiles());
  197. publishProgress();
  198.  
  199.  
  200. return null;
  201. }
  202.  
  203. @Override
  204. protected void onProgressUpdate(Void... values) {
  205. super.onProgressUpdate(values);
  206. setListview();
  207. }
  208.  
  209. @Override
  210. protected void onPostExecute(Void aVoid) {
  211. super.onPostExecute(aVoid);
  212. progressBar.setVisibility(View.INVISIBLE);
  213. listViewMusic.setVisibility(View.VISIBLE);
  214. }
  215.  
  216. private void search(File[] file) {
  217. for (File f : file) {
  218. if (f.getAbsolutePath().contains(".mp3")) {
  219. String s = f.getAbsolutePath();
  220. s = s.substring(s.lastIndexOf("/") + 1);
  221. ContentValues values = new ContentValues();
  222. values.put(musicdb.DB_SONG_NAME, s);
  223. values.put(musicdb.DB_SDPATH, f.getAbsolutePath());
  224. getContentResolver().insert(dbURI, values);
  225.  
  226. }
  227. if (f.listFiles() != null)
  228. search(f.listFiles());
  229. }
  230. }
  231.  
  232. private void setListview() {
  233. Cursor cursor = getContentResolver().query(dbURI, null, null, null, null);
  234. cursor.moveToFirst();
  235. int nameindex = cursor.getColumnIndex(musicdb.DB_SONG_NAME);
  236. ArrayList<String> s = new ArrayList<String>();
  237. while (!cursor.isAfterLast()) {
  238. s.add(cursor.getString(nameindex));
  239. cursor.moveToNext();
  240. }
  241. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, s);
  242. listViewMusic.setAdapter(adapter);
  243. cursor.close();
  244. }
  245. }
  246.  
  247. @Override
  248. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  249. Log.i(TAG, "onItemClick: ");
  250. Integer select = ++position;
  251. Cursor cursor = getContentResolver().query(dbURI, null, "_id = " + select.toString(), null, null);
  252. cursor.moveToFirst();
  253.  
  254. int indexsong = cursor.getColumnIndex(musicdb.DB_SONG_NAME);
  255. settings = getSharedPreferences(PREFS_NAME, 0);
  256. SharedPreferences.Editor editor = settings.edit();
  257. editor.putString("last_play", cursor.getString(indexsong));
  258. textViewlastPlay.setText(cursor.getString(indexsong));
  259. editor.apply();
  260.  
  261. int indexsd = cursor.getColumnIndex(musicdb.DB_SDPATH);
  262. mediaService.play(cursor.getString(indexsd));
  263. cursor.close();
  264. seekBar.setMax(mediaService.duration());
  265. }
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement