마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

musicplayer 질문입니답 글자수제한으로 소스가 없는게있을수있습니다

0 추천
    private int currentSongIndex = -1;

    private final Handler handler = new Handler();

    private Runnable updateTimeTask = new Runnable() {
        @Override
        public void run() {
            int currentTime = mediaPlayer.getCurrentPosition();
            currentTimeView.setText(String.format(Locale.US, "%02d:%02d", currentTime / 1000 / 60, currentTime / 1000 % 60));

            seekBar.setProgress(currentTime / 1000);
            handler.postDelayed(this, 500);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_player);
        musicRetriever = new MusicRetriever();

        mediaPlayer = new MediaPlayer();
        mediaPlayer.setOnPreparedListener(this);
        mediaPlayer.setOnCompletionListener(this);
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                mediaPlayer.seekTo(seekBar.getProgress() * 1000);
                handler.post(updateTimeTask);
            }
        });

       filenameView = (TextView) findViewById(R.id.filename);
        currentTimeView = (TextView) findViewById(R.id.currentTime);
        durationView = (TextView) findViewById(R.id.duration);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    1);
        } else {
            musicList = musicRetriever.getMusicList();
            populateList();
        }
    }
    @Override
    public void onPrepared(MediaPlayer mp) {
        int duration = mp.getDuration();
        durationView.setText(String.format(Locale.US, "%02d:%02d", duration / 1000 / 60, duration / 1000 % 60));
        seekBar.setMax(mp.getDuration() / 1000);
        playPauseButton.setImageResource(R.drawable.btn_pause);
        handler.postDelayed(updateTimeTask, 10);
        mp.start();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        if (currentSongIndex >= musicList.size() - 1) {
            handler.removeCallbacks(updateTimeTask);
            return;
        }
        playMusic(currentSongIndex + 1);
    }

musicplayer를 재생후 화면을 끄면

seekbar의진행상태는 멈춰있고  textview의 숫자가 초기화되어버립니다

그리고 음악시작을 누르면 새로운게 같이들립니다.

익명사용자 님이 2016년 6월 8일 질문
원래 화면을 끄면  destory가 호출되는게 맞는건가요??

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...