zoukankan      html  css  js  c++  java
  • 音乐播放器

    public class MainActivity extends Activity {
        private EditText nameText;
        private String path;
        private MediaPlayer mediaPlayer;
        private boolean pause;
        private int position;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            mediaPlayer = new MediaPlayer();
            nameText = (EditText) this.findViewById(R.id.filename);
            //处理来电情况
            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            telephonyManager.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
        }
        
        private final class MyPhoneListener extends PhoneStateListener{
            public void onCallStateChanged(int state, String incomingNumber) {
                switch (state) {
                case TelephonyManager.CALL_STATE_RINGING://来电
                    if(mediaPlayer.isPlaying()) {
                        position = mediaPlayer.getCurrentPosition();
                        mediaPlayer.stop();
                    }
                    break;
    
                case TelephonyManager.CALL_STATE_IDLE:
                    if(position>0 && path!=null){
                        play(position);
                        position = 0;
                    }
                    break;
                }
            }
        }
        /*
        @Override
        protected void onPause() {
            if(mediaPlayer.isPlaying()) {
                position = mediaPlayer.getCurrentPosition();
                mediaPlayer.stop();
            }
            super.onPause();
        }
    
        @Override
        protected void onResume() {
            if(position>0 && path!=null){
                play(position);
                position = 0;
            }
            super.onResume();
        }
    */
        @Override
        protected void onDestroy() {
            mediaPlayer.release();
            mediaPlayer = null;
            super.onDestroy();
        }
    
        public void mediaplay(View v){
            switch (v.getId()) {
            case R.id.playbutton:
                String filename = nameText.getText().toString();
                File audio = new File(Environment.getExternalStorageDirectory(), filename);
                if(audio.exists()){
                    path = audio.getAbsolutePath();
                    play(0);
                }else{
                    path = null;
                    Toast.makeText(getApplicationContext(), R.string.filenoexist, 1).show();
                }
                break;
                
            case R.id.pausebutton:
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.pause();//暂停
                    pause = true;
                    ((Button)v).setText(R.string.continues);
                }else{
                    if(pause){
                        mediaPlayer.start();//继续播放
                        pause = false;
                        ((Button)v).setText(R.string.pausebutton);
                    }
                }
                break;
            case R.id.resetbutton:
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.seekTo(0);//从开始位置播放音乐
                }else{
                    if(path!=null){
                        play(0);
                    }
                }
                break;
            case R.id.stopbutton:    
                if(mediaPlayer.isPlaying()) mediaPlayer.stop();
                break;
            }
        }
    
        private void play(int position) {
            try {
                mediaPlayer.reset();//把各项参数恢复到初始状态
                mediaPlayer.setDataSource(path);
                mediaPlayer.prepare();//进行缓冲
                mediaPlayer.setOnPreparedListener(new PrepareListener(position));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        private final class PrepareListener implements OnPreparedListener{
            private int position;
            public PrepareListener(int position) {
                this.position = position;
            }
    
            public void onPrepared(MediaPlayer mp) {
                mediaPlayer.start();//开始播放
                if(position>0) mediaPlayer.seekTo(position);
            }
        }
    }
  • 相关阅读:
    关于计算机改名无法连接TFS的问题
    配置 SQL Server 2008 Email 发送以及 Job 的 Notification通知功能
    javascript原型链中 this 的指向
    JavaScript中的构造函数 renturn
    Javascript中valueOf与toString区别
    JavaScript 中this与Dom中的注意
    SQL优化 CREATE STATISTICS
    Maven根据不同的环境打包不同的配置
    Maven build标签
    解决Maven报Plugin execution not covered by lifecycle configuration问题
  • 原文地址:https://www.cnblogs.com/heml/p/3515808.html
Copyright © 2011-2022 走看看