如何检测按钮背景资源(可绘制)的Android?

达伦

我目前正在构建一个带有按钮的应用程序,一旦用户单击该按钮,媒体记录器就会启动并记录五秒钟,然后停止。然后,将录制的内容加载到媒体播放器中,然后用户可以再次按下该按钮进行播放。到目前为止,这是我的代码:

    OUTPUT_FILE = Environment.getExternalStorageDirectory() + "/tempRecord.3gpp";
    audioSample1 = (Button) findViewById(R.id.sample1);
    // button background drawable is grey_button
    final Drawable buttonBackground = audioSample1.getBackground();     
    audioSample1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (audioSample1.getBackground().equals(buttonBackground)) {
                Log.d("Button", "Start Record");
                try {
                    startRecord();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            else if (audioSample1.getBackground() != null) {
                Log.d("Button", "Start Playback");
                try {
                    startPlayback();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    });

}

public void startRecord() throws Exception {
    if (recorder != null) {
        recorder.release();
    }
    File fileOut = new File(OUTPUT_FILE);
    if (fileOut != null) {
        fileOut.delete();
    }
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(OUTPUT_FILE);
    recorder.setAudioSamplingRate(44100);
    recorder.setMaxDuration(5000);
    recorder.prepare();
    recorder.start();
    audioSample1.setBackgroundResource(R.drawable.red_button);
    recorder.setOnInfoListener(new OnInfoListener() {

        public void onInfo(MediaRecorder recorder, int timer, int extra) {
            if (timer == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
                Log.v("Recorder", "Maximum Duration Reached");
                recorder.stop();
                audioSample1.setBackgroundResource(R.drawable.green_button);    
            }
        }
    });
}

public void startPlayback() throws Exception {
    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.release();
    }
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setDataSource(OUTPUT_FILE);
    mediaPlayer.prepare();
    mediaPlayer.start();
}

}

基本上,我遇到的问题是该onClick方法检测按钮的状态,并根据可绘制背景的背景来开始记录或开始播放。如果按钮处于其第一状态,drawable.grey_button则媒体记录器将开始记录并将可绘制背景变为红色按钮,完成记录后,它将变为绿色按钮以进行播放。此代码通常可以正常工作,但是如果用户在媒体记录器记录时按下按钮,则媒体播放器将无法创建媒体播放器。我知道问题是因为我在打电话,audioSample1.getBackground() != null但我找不到其他方法来检测backgroundResources已更改的

请有人可以给我一些有关如何检测每个对象的建议backgroundResource吗?

同样,一旦Media Player加载了音频样本,我现在希望同一按钮能够实现onTouchListener和手势检测器。这可能吗,您如何实现这种方法?

谢谢

埃尔兹

您的方法确实很乏味,但这是 使用它代替返回按钮的可绘制集。 getBackgroundDrawable(); getBackground()

但您也可以将字符串用作按钮,这可能很简单...

编辑1 这种方法更好

  Button b = new Button(this); // now this is your button
    b.setText("Play"); //the button has a name as 'play' when its not clicked 
    // and in your case is drawable.grey_button
    b.setBackgroundResource(R.drawable.grey_button);

    b.setOnClickListener(new OnClickListener() {//setting your onclick

        @Override
        public void onClick(View arg0) {
            Button bb = (Button) arg0; // getting your clicked button
            if(bb.getText().toString().equals("play")){ // checking if the text on your bb is play
                //start your playback and change the background
                bb.setText("pause"); // setting the text to pause
            }else if(bb.getText().toString().equals("pause")){
                //pause playback and change your background
                bb.setText("play");
            }else{
                //stop play and reset mediaplayer and change your background.. 
                // this is not even captured
            }

        }
    });

这种方法更好..让我知道是否有帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何随机选择可绘制资源(图片)并将其设置为按钮的背景?

来自分类Dev

这个Android可绘制背景资源是什么?

来自分类Dev

如何制作android动画可绘制背景

来自分类Dev

将按钮的背景与可绘制对象进行比较(Android)

来自分类Dev

Android:如何创建椭圆形的可绘制资源?

来自分类Dev

Android-资源-如何通过uri识别可绘制对象?

来自分类Dev

如何检测Android ImageView可绘制对象是否是动画?

来自分类Dev

如何在Android中设置背景的可绘制绘画颜色?

来自分类Dev

Android:默认按钮可绘制

来自分类Dev

如何在Android中创建可绘制的按钮?

来自分类Dev

Android Studio:无法指定可绘制资源

来自分类Dev

可绘制资源的Android动态变量

来自分类Dev

Android:将渐变可绘制设置为背景时,按钮上缺少高度

来自分类Dev

如何更改可绘制资源中的线长?

来自分类Dev

从字符串设置背景可绘制资源

来自分类Dev

从字符串设置背景可绘制资源

来自分类Dev

EditText背景可绘制资源名称是什么?

来自分类Dev

如何获取具有可绘制状态的按钮的背景色?

来自分类Dev

如何在仍应用可绘制文件的同时将图像作为按钮的背景

来自分类Dev

Android可绘制背景角无法删除

来自分类Dev

哪种最佳可绘制资源可用于关闭按钮?

来自分类Dev

如何以编程方式绘制特定的可绘制资源?

来自分类Dev

Android:在按钮上设置可绘制

来自分类Dev

Android:在按钮上设置可绘制

来自分类Dev

Android eclipse-按钮可绘制问题

来自分类Dev

Android L无法将虚线绘制为可绘制背景

来自分类Dev

以编程方式更改可绘制onClick的按钮背景

来自分类Dev

如何减小单选按钮的可绘制大小?

来自分类Dev

具有可绘制背景和左侧可绘制样式的按钮

Related 相关文章

  1. 1

    如何随机选择可绘制资源(图片)并将其设置为按钮的背景?

  2. 2

    这个Android可绘制背景资源是什么?

  3. 3

    如何制作android动画可绘制背景

  4. 4

    将按钮的背景与可绘制对象进行比较(Android)

  5. 5

    Android:如何创建椭圆形的可绘制资源?

  6. 6

    Android-资源-如何通过uri识别可绘制对象?

  7. 7

    如何检测Android ImageView可绘制对象是否是动画?

  8. 8

    如何在Android中设置背景的可绘制绘画颜色?

  9. 9

    Android:默认按钮可绘制

  10. 10

    如何在Android中创建可绘制的按钮?

  11. 11

    Android Studio:无法指定可绘制资源

  12. 12

    可绘制资源的Android动态变量

  13. 13

    Android:将渐变可绘制设置为背景时,按钮上缺少高度

  14. 14

    如何更改可绘制资源中的线长?

  15. 15

    从字符串设置背景可绘制资源

  16. 16

    从字符串设置背景可绘制资源

  17. 17

    EditText背景可绘制资源名称是什么?

  18. 18

    如何获取具有可绘制状态的按钮的背景色?

  19. 19

    如何在仍应用可绘制文件的同时将图像作为按钮的背景

  20. 20

    Android可绘制背景角无法删除

  21. 21

    哪种最佳可绘制资源可用于关闭按钮?

  22. 22

    如何以编程方式绘制特定的可绘制资源?

  23. 23

    Android:在按钮上设置可绘制

  24. 24

    Android:在按钮上设置可绘制

  25. 25

    Android eclipse-按钮可绘制问题

  26. 26

    Android L无法将虚线绘制为可绘制背景

  27. 27

    以编程方式更改可绘制onClick的按钮背景

  28. 28

    如何减小单选按钮的可绘制大小?

  29. 29

    具有可绘制背景和左侧可绘制样式的按钮

热门标签

归档