如何处理按钮点击来自android中的服务?

时间:2016-03-13 07:13:18

标签: android android-layout android-fragments

当我的服务开始时,我想点击按钮

这是我的代码:当我调用方法从活动到服务时,我的应用程序停止工作 按钮停止录制

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {

}

// The service is starting, due to a call to startService()
MainActivity mc;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    mc = new MainActivity();
    mc.btn.post(new Runnable() {
        @Override
        public void run() {
            mc.btn.performClick();
        }
    });
}

我之前的代码我把它放在OnStartCommend中:停止录制 我使用另一项服务来启动记录,当我使用其他服务停止记录我的应用程序停止工作时,它工作正常,这是我的代码停止录制

recorder.stop();
        recorder.release();
        ContentValues values = new ContentValues(4);
        long current = System.currentTimeMillis();
        values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());
        values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
        values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/amr");
        values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());
        ContentResolver contentResolver = getContentResolver();

        Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Uri newUri = contentResolver.insert(base, values);

        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));

2 个答案:

答案 0 :(得分:0)

您可以使用BroadCastReceiver处理服务之外的任何操作或事件。

流程吼叫:

  1. 在Button OnClickListener()中,您使用自定义操作发送BroadCast 例如:static final String ACTION_BUTTON_CLICK = "action.custom.button.click";

  2. 您在服务中创建并注册广播接收器以上操作

答案 1 :(得分:0)

您可以通过发送广播来完成此操作。从按钮的onClick发送广播,然后在服务中接收广播并做任何你喜欢的事情。 有关广播,请参阅here