• 音乐播放器


    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);
            }
        }
    }
  • 相关阅读:
    ABP框架插件开发
    ionic 向路由中的templateUrl(模板页)传值
    EFT4 生成实体类
    mvc 下的 signalR使用小结
    利用javascript实现页面截图
    linux定时任务php
    PHPCMSV9的CKEDITOR编辑器增加行距
    上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
    centOS7下安装GUI图形界面
    虚拟机中的Linux安装VMware Tools的方法
  • 原文地址:https://www.cnblogs.com/heml/p/3515808.html
Copyright © 2020-2023  润新知