0

每当连接蓝牙设备时,我都会使用我的广播接收器设置共享首选项(BT_Device_connected)。

现在,当您插入手机时,我正在编写的应用程序会自动打开蓝牙(是的,我知道不建议这样做。重点!;)。

我要做的是在手机插入后等待 2 分钟,然后检查在这两分钟内手机是否已连接到蓝牙设备(如果 BT_device_connected 为真,它有,如果为假,它没有't)。

所以,我正在尝试从一个服务中启动一个计时器/处理程序,然后等待 2 分钟,然后启动一个新服务,或者一种检查设备是否已连接的方法。

并且...我必须在后台执行所有这些操作,因为这些都不会真正影响 ui。

我拥有但不起作用的光荣代码如下:

public void onDeviceConnectTimer(){

TimerTask wait;
final Handler handler = new Handler();
Timer t = new Timer();
wait = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                            Intent serviceIntent = new Intent(CheckIfDeviceConnectService.class.getName());
                            getApplicationContext().startService(serviceIntent);
                         Log.d("TIMER", "Timer set off");
                        }
               });
        }};
    t.schedule(wait, initializeDate()); 
 }

我做错了什么,有没有更好的方法来做到这一点?

4

1 回答 1

2

尝试handler像这样使用:

final Handler handler = new Handler();
Runnable myRunnable=new Runnable()
{
public void run()
  { 
    //Start sevice here.

  }
};

现在开始运行:

handler.postDelayed(myRunnable, 120000);

这将在 2 分钟后启动您的服务。

于 2012-08-16T03:20:01.900 回答