如何设置数据源?

时间:2018-07-24 13:12:47

标签: java android path fragment ontouchlistener

我使用onTouchListener对Fragment内的ImageView进行了编程,以便每次单击它时都会播放一个音频文件(几乎是SoundBoard按钮)。在测试它时,我发现几次单击后音频就会停止播放,并且我在一个论坛上了解到,可以通过在每次单击时重置MediaPlayer来解决此问题。事实是,为了重置MediaPlayer,我还需要setDataSource(),无论我尝试使用哪种路径,它都会不断抛出IOExeptions。

该文件名为johnnyyy.ogg,我已经尝试过:

Uri dir = Uri.parse("android.resource://" + getActivity().getPackageName() + "/raw/johnnyyy");
Uri dir = Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.johnnyyy)
Uri dir = Uri.parse("android.resource://" + getActivity().getPackageName() + "/app/main/res/raw/johnnyyy");

他们都不起作用,这让我发疯。我该如何正确设置路径?如果有帮助,这里是其余的侦听器:

    b2.setOnTouchListener(new View.OnTouchListener() {

        ImageView bg2 = (ImageView)view.findViewById(R.id.bg2);
        ImageView pb2 = (ImageView)view.findViewById(R.id.play2);
        TextView tit2 = (TextView)view.findViewById(R.id.audio2);

        @Override
        public boolean onTouch(View view, MotionEvent event) {
            MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.johnnyyy);

            if(event.getAction()==MotionEvent.ACTION_DOWN){
                bg2.setBackgroundColor(getResources().getColor(R.color.pressed));
                pb2.setImageResource(R.mipmap.play);
                tit2.setTextColor(getResources().getColor(R.color.colorPrimary));

                return true;
            }
            if(event.getAction()==MotionEvent.ACTION_UP){
                bg2.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
                pb2.setImageResource(R.mipmap.ic_action_navigation_more_vert);
                tit2.setTextColor(getResources().getColor(R.color.colorSecondary));
                Uri dir = Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.johnnyyy);

                mp.reset();
                mp.setDataSource(getContext(), dir);
                mp.start();

                return true;
            }

            return true;
        }
    });

johnny.ogg在此文件夹中: Project path

0 个答案:

没有答案