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

LG폰으로 재생시 앱 종료 현상

0 추천

버튼을 누르면 그 아이콘이 변하면서 오디오가 재생되는 기능입니다.

처음에 버튼 클릭시 오디오만 재생되는 것은 문제없는데,

버튼 클릭시 이미지가 변하면서 재생되는 부분에서 앱이 강제 종료됩니다.

삼성폰에서는 문제 없는데 LG폰에서는 앱이 종료됩니다.(그런데 소리는 나오는데 이유가 뭘까요?)

 

아이콘 변경 및 재생부분

View.OnClickListener _playListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(player != null)
        {
            if(player.isPlaying() == true) {
                _btPlay.setText("재생");
                //_btBottomPlay.setText("PLAY");
                player.pause();
                Drawable s = getResources().getDrawable(R.drawable.playbutton,null); //버튼 아이콘 변경
                _btBottomPlay.setBackground(s);

                return;
            }
            else {
                _btPlay.setText("정지");
                //_btBottomPlay.setText("STOP");
                player.start();
                Drawable s = getResources().getDrawable(R.drawable.pause,null); //버튼 아이콘 변경
                _btBottomPlay.setBackground(s);

                return;
            }
            //player.stop();
            //player.release();
        }
        try {
            //player = MediaPlayer.create(MainActivity.this, MainActivity.this.getResources().getIdentifier("i" + info.isbn13, "raw", getPackageName()));
            String s = MySingleton.getServer() + URLEncoder.encode(_strAudio, "UTF-8");
            Log.d("test1", s);
            player = MediaPlayer.create(getActivity(), Uri.parse(s));
        } catch(Resources.NotFoundException e)
        {
            //player = MediaPlayer.create(MainActivity.this, R.raw.audiobook);
            //player = MediaPlayer.create(MainActivity.this, Uri.parse("http://ljj.codns.com:10001/files/audiobook.mp3"));
        } catch(UnsupportedEncodingException e2) { }
                        /*if(player == null)
                            player = MediaPlayer.create(MainActivity.this, Uri.parse("http://ljj.codns.com:10001/files/audiobook.mp3"));*/

        if(player != null) {
            //_btPlay.setText("Stop");
            player.start();
            _btPlay.setText("정지");
            //_btBottomPlay.setText("STOP");
            Drawable s = getResources().getDrawable(R.drawable.pause,null); //버튼 아이콘 변경
            _btBottomPlay.setBackground(s);

            ///_btMenu.setVisibility(View.VISIBLE);
            //_btMenu.setText("SEARCH");
        }
    }
};
nicekick (120 포인트) 님이 2017년 9월 12일 질문

1개의 답변

+1 추천

Android Studio에서 상기 getDrawable()에서 밑줄이 그러지면서 deprecated라고 뜰텐데요.
그렇게 뜨면 버전 이슈가 있는 걸로 생각하시면 됩니다.

아래 코드를 참고하세요. LG폰은 Android OS 버전이 21 이상이었으니까, 오류가 나는 겁니다.

final int version = Build.VERSION.SDK_INT;
if (version >= 21) {
    return ContextCompat.getDrawable(context, id);
} else {
    return context.getResources().getDrawable(id);
}
Will Kim (43,170 포인트) 님이 2017년 9월 12일 답변
...