在android中,1秒后调用另一个intent



我想启用蓝牙并在一秒钟后关闭它。但我不知道如何做到这一点,我已经尝试过了,但它没有做任何事情,只是启用蓝牙。我这样做的原因是因为我实际上想要禁用蓝牙。但它只有在你在应用程序本身中使用intent时才会起作用,否则它会强制关闭(如果它被通知栏启用)

我正在使用这个代码来启用/禁用蓝牙

  public void optimize(View view) {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
         if (mBluetoothAdapter == null) {
             // Device does not support Bluetooth
             }else{
             if (!mBluetoothAdapter.isEnabled()) {
                mBluetoothAdapter.enable();
             }else{
              mBluetoothAdapter.disable();    
             }
             }

我现在使用的代码

    public void optimize(View view) {
        final BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
         if (mBluetoothAdapter == null) {
             // Device does not support Bluetooth
             }else{
             if (!mBluetoothAdapter.isEnabled()) {
                mBluetoothAdapter.enable();
             {Thread mythread = new Thread() {
                    public void run()
                    {
                        try
                        {
                            sleep(1000);
                        }
                        catch (Exception e)
                        {
                        }
                        finally
                        {

              BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
              mBluetoothAdapter.disable();    

                        }
                    }
                };
            }
    }           
    }

试试这个

            Timer timer = new Timer();
        timer.schedule(new TimerTask() {
                @Override
                public void run() {
                                      //turn off code should be here 
                                  BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
                                  mBluetoothAdapter.disable(); 
            }, 1000);

试试这个,使用Android处理器的postdelayed()。

它将在指定时间(以毫秒为单位)后执行run()块中的代码。

public void optimize(View view) {
    final BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
     if (mBluetoothAdapter == null) {
         // Device does not support Bluetooth
         }else{
         if (!mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.enable();
               // Instead of run Thread , use Handler's Postdelayed method as,
               Handler mHandler = new Handler();
               mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                      // Runs this after 1 second
                BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
          mBluetoothAdapter.disable();    
            }
        }, 1000); // After 1 second it executes code inside run()
        }
}           
}

试试这个

    protected int _splashTime = 1000;
    Thread mythread = new Thread() {
        public void run() {
            try {
                int waited = 0;
                while (waited < _splashTime) {
                    sleep(100);
                        waited += 100;
                }
            } catch (Exception e) {
            } finally {
                //
            }
        }
    };
    mythread.start();

你可以直接启动一个新线程,你不应该在UI线程中执行这段代码(因为你正在休眠线程一秒钟)

代码应该是:

 public void optimize(View view) {
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
        final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
            .getDefaultAdapter();
        if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.enable();
            try {
            Thread.sleep(1000);
            } catch (InterruptedException e) {
            e.printStackTrace();
            }
            mBluetoothAdapter.disable();
        }
        }
    });
    thread.start();
    }

像这样做

private static int SPLASH_TIME_OUT = 1000;//一秒钟(你可以增加它来看到反射)

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
mBluetoothAdapter.enable();
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
         BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
         if (mBluetoothAdapter.isEnabled()) {//disable bluetooth if it is already enabled
                mBluetoothAdapter.disable(); 
            }
    }
}, SPLASH_TIME_OUT);

并在manifest文件中设置权限

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

最新更新