Audio

Audio

Source code introduction: Audio sound effects Audio, suitable for learning

Source code effect:

Source code snippet:

  1. package com.example.shiyan;
  2.   
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import android.app.Service;
  6. import android.content.Intent;
  7. import android.graphics.Bitmap;
  8. import android.graphics.BitmapFactory;
  9. import android.graphics.drawable.BitmapDrawable;
  10. import android.media.MediaPlayer;
  11. import android.media.MediaPlayer.OnCompletionListener;
  12. import android.net.Uri;
  13. import android.os.Handler;
  14. import android.os.IBinder;
  15. import android.view.animation.AnimationUtils;
  16. import android.widget.Toast;
  17.   
  18. /**
  19. * Class Description: Music playback service class
  20. * @author LiangAn
  21. * @version Created on March 18, 2015 at 10:24:17 AM
  22. */  
  23. public   class ControlPlay extends Service {
  24.   
  25. public   static MediaPlayer myMediaPlayer;
  26.   
  27. public   static MainActivity c_ma;
  28.   
  29. public   static   int playing_id = 0 ;
  30.   
  31. // Initialize the variable for the song playing time  
  32. private   int CurrentTime = 0 ;
  33. // Initialize the variable for the total time of the song  
  34. private   int CountTime = 0 ;
  35.   
  36. public   static Music_infoAdapter m_in;
  37.   
  38. public Thread thread;
  39. Handler handler = new Handler();
  40. public   boolean playFlag = true ;
  41. public   int vTemp = 0 ;
  42.       
  43.   
  44. @Override  
  45. public IBinder onBind(Intent intent) {
  46. return   null ;
  47. }
  48.   
  49. @Override  
  50. public   void onCreate() {
  51. super .onCreate();
  52. initMediaSource(initMusicUri( 0 ));
  53. }
  54.   
  55. @Override  
  56. public   void onDestroy() {
  57. super .onDestroy();
  58. if (myMediaPlayer != null ) {
  59. myMediaPlayer.stop();
  60. myMediaPlayer.release();
  61. myMediaPlayer = null ;
  62. }
  63. }
  64.   
  65. @Override  
  66. public   void onStart(Intent intent, int startId) {
  67. super .onStart(intent, startId);
  68. String playFlag = intent.getExtras().getString( "control" );
  69. if ( "play" .equals(playFlag)) {
  70. playMusic();
  71. } else   if ( "next" .equals(playFlag)) {
  72. playNext();
  73. } else   if ( "front" .equals(playFlag)) {
  74. playFront();
  75. } else   if ( "listClick" .equals(playFlag)) {
  76. playing_id = intent.getExtras().getInt( "musicId_1" );
  77. initMediaSource(initMusicUri(playing_id));
  78. playMusic();
  79. } else   if ( "gridClick" .equals(playFlag)) {
  80. playing_id = intent.getExtras().getInt( "musicId_2" );
  81. initMediaSource(initMusicUri(playing_id));
  82. playMusic();
  83. }
  84. }
  85.   
  86. /**
  87. * Initialize the media object
  88. *
  89. * @param mp3Path
  90. * mp3 path
  91. */  
  92. public   void initMediaSource(String mp3Path) {
  93. Uri mp3Uri = Uri.parse(mp3Path);
  94. if (myMediaPlayer != null ) {
  95. myMediaPlayer.stop();
  96. myMediaPlayer.reset();
  97. myMediaPlayer = null ;
  98. }
  99. // Create an object for myMediaPlayer  
  100. myMediaPlayer = MediaPlayer.create( this , mp3Uri);
  101. //myMediaPlayer = MediaPlayer.create(this, R.raw.aaaa);  
  102. // c_ma.startRhythm(myMediaPlayer);  
  103. }
  104.   
  105. /**
  106. * Returns the song path of the row in the list
  107. *
  108. * @param _id
  109. * indicates the song number, starting from 0
  110. */  
  111. public String initMusicUri( int _id) {
  112. playing_id = _id;
  113. String s;
  114. // Get the value only when the list and list length are not empty  
  115. if (Music_infoAdapter.musicList != null  
  116. && Music_infoAdapter.musicList.size() != 0 ) {
  117. s = Music_infoAdapter.musicList.get(_id).getMusicPath();
  118. return s;
  119. } else {
  120. // Otherwise returns an empty string  
  121. return   "" ;
  122. }
  123. }
  124. /**
  125. * Music playback method, with pause method
  126. */  
  127. public   void playMusic() {
  128.   
  129. // Check that the song cannot be empty  
  130. System.out.println( "sfajfdsa" );
  131. if (myMediaPlayer != null && Music_infoAdapter.musicList.size() != 0 ) {
  132. if (myMediaPlayer.isPlaying()) {
  133. // Pause the song  
  134. myMediaPlayer.stop();
  135. // Change the play button background  
  136. MainActivity.play_ImageButton
  137. .setBackgroundResource(R.drawable.play_button);
  138. //Cancel notification  
  139. MainActivity.mNotificationManager.cancel( 1 );
  140. } else {
  141. System.out.println( "sfajfdsa2" );
  142. // myMediaPlayer.start();  
  143. try {
  144. if (myMediaPlayer != null )
  145. {
  146. myMediaPlayer.stop();
  147. }
  148. myMediaPlayer.prepare();
  149. myMediaPlayer.start();
  150.                       
  151. } catch (Exception e) {
  152.                      
  153. e.printStackTrace();
  154. }
  155. // ///////////////////////// Initialize lyrics configuration //////////////////////// //  
  156.   
  157. // Change background -  
  158. MainActivity.play_ImageButton
  159. .setBackgroundResource(R.drawable.pause_button);
  160. // Start thread to update SeekBar  
  161. startSeekBarUpdate();
  162.                   
  163. // Update the song number to play  
  164. int x = playing_id + 1 ;
  165. MainActivity.music_number.setText( "" + x + "/"  
  166. + Music_infoAdapter.musicList.size());
  167.   
  168. // Intercept .mp3 string  
  169. String a = Music_infoAdapter.musicList.get(playing_id)
  170. .getMusicName();
  171. // int b = a.indexOf(".mp3");  
  172. // String c = a.substring(0, b);  
  173. // Switch to update song name with animation  
  174. MainActivity.music_Name.setText(a);
  175. MainActivity.music_Name.setAnimation(AnimationUtils
  176. .loadAnimation(ControlPlay. this , R.anim.translate_z));
  177.   
  178. // Update album name with animation  
  179. MainActivity.music_Album
  180. .setText(Music_infoAdapter.musicList.get(playing_id)
  181. .getMusicAlbum());
  182. MainActivity.music_Album.setAnimation(AnimationUtils
  183. .loadAnimation(ControlPlay. this , R.anim.alpha_y));
  184.   
  185. // Update song time  
  186. MainActivity.time_right.setText(Music_infoAdapter
  187. .toTime(Music_infoAdapter.musicList.get(playing_id)
  188. .getMusicTime()));
  189.   
  190. }
  191.   
  192. /**
  193. * Monitor whether the playback is completed
  194. */  
  195. myMediaPlayer.setOnCompletionListener( new OnCompletionListener() {
  196.   
  197. @Override  
  198. public   void onCompletion(MediaPlayer mp) {
  199. // TODO Auto-generated method stub  
  200.   
  201. //After playing the current song, automatically play the next one  
  202. playNext();
  203. }
  204. });
  205.   
  206. } else {
  207. Toast.makeText(ControlPlay. this , "I can't find any songs on my phone..." ,
  208. Toast.LENGTH_SHORT).show();
  209. }
  210. }
  211.   
  212. /**
  213. * Play next song
  214. */  
  215. public   void playNext() {
  216.   
  217. // Check that the song cannot be empty  
  218. if (Music_infoAdapter.musicList.size() != 0 ) {
  219. // If the *** song is played, keep playing the *** song  
  220. if (playing_id == Music_infoAdapter.musicList.size() - 1 ) {
  221. playing_id = Music_infoAdapter.musicList.size() - 1 ;
  222. Toast.makeText(ControlPlay. this , "It's the last song!" ,
  223. Toast.LENGTH_SHORT).show();
  224.   
  225. MainActivity.play_ImageButton
  226. .setBackgroundResource(R.drawable.play_button);
  227. MainActivity.mNotificationManager.cancel( 1 );
  228.   
  229. } else {
  230. initMediaSource(initMusicUri(++playing_id));
  231. playMusic();
  232. }
  233. } else {
  234. Toast.makeText(ControlPlay. this , "No songs found!" , Toast.LENGTH_SHORT)
  235. .show();
  236. }
  237. }
  238.   
  239. /**
  240. * Play previous song
  241. */  
  242. public   void playFront() {
  243.   
  244. // Check that the song cannot be empty  
  245. if (Music_infoAdapter.musicList.size() != 0 ) {
  246. // If the ***th song is played, keep playing the ***th song  
  247. if (playing_id == 0 ) {
  248. playing_id = 0 ;
  249. Toast.makeText(ControlPlay. this , "Now it's the first song!" ,
  250. Toast.LENGTH_SHORT).show();
  251. } else {
  252. initMediaSource(initMusicUri(--playing_id));
  253. playMusic();
  254. }
  255. } else {
  256. Toast.makeText(ControlPlay. this , "No songs found!" , Toast.LENGTH_SHORT)
  257. .show();
  258. }
  259. }
  260.   
  261. public   void startSeekBarUpdate() {
  262. handler.post(start);
  263. }
  264.   
  265. Runnable start = new Runnable() {
  266.   
  267. @Override  
  268. public   void run() {
  269. // TODO Auto-generated method stub  
  270.   
  271. handler.post(updatesb);
  272. }
  273.   
  274. };
  275.   
  276. Runnable updatesb = new Runnable() {
  277.   
  278. @Override  
  279. public   void run() {
  280. // Get the time it takes for SeekBar to move there  
  281. MainActivity.play_time = myMediaPlayer
  282. .getCurrentPosition();
  283.   
  284. // Set the progress of filling the current acquisition  
  285. MainActivity.seekbar
  286. .setProgress(MainActivity.play_time);
  287. //The *** value of SeekBar is filled with song time  
  288. MainActivity.seekbar.setMax(Music_infoAdapter.musicList
  289. .get(playing_id).getMusicTime());
  290.   
  291. // The thread starts after a delay of 1000 milliseconds  
  292. handler.postDelayed(updatesb, 1000 );
  293. }
  294. };
  295.   
  296. Handler mHandler = new Handler();
  297.       
  298.   
  299.       
  300. }

Download address: http://download..com/data/2111747

<<:  The new “League of Legends” for startups

>>:  Scan QR code barcode

Recommend

Latest | Data rankings of 56 mainstream information flow advertising platforms!

The following is the latest traffic ranking of 56...

How to build private domain traffic on WeChat for enterprises?

When it comes to live streaming sales, Lao Luo’s ...

How to operate Douyin for your business from 0 to 1?

When companies first start using TikTok, they oft...

I spent 20,000 yuan, why is there not a single conversion?

“I know that half the money I spend on advertisin...

How to achieve refined operations at different stages of the product?

The job of operations is to "help products d...

H5 Mobile Debugging Guide

[[406894]] A brief summary: Mobile debugging pain...

Alibaba internal review | How to plan a large-scale brand event from scratch

Organizing various celebration activities is a pr...

Baidu bidding hosting optimization service standards!

The market for Baidu's bidding promotion is v...

What is the method for consecrating the Wenchang Pagoda?

Wenchang Tower is a kind of mascot, and its abili...

Can’t do these 5 things? I advise you not to invest in information flow!

According to the latest data from iResearch MUT, ...

Running ClojureScript on Android

[[151938]] Over the past few days, I've had o...

Italy has 3526 new deaths and 345 deaths, with a total of 2503 deaths

According to the latest news from the Dutch media...

Apple's history: Jobs' "illness" and Cook's "fate"

[[239103]] Side A is the excellent market value m...