首页 > 解决方案 > 在android studio中使用java创建蓝牙遥控器的问题

问题描述

我正在尝试使用蓝牙控制编写一个机器人汽车远程应用程序。作为第一步,我希望我的应用程序能够打开/关闭手机中的蓝牙服务。我第一次尝试使用startActivityForResult但它已被弃用,所以我尝试使用不同的方法,但我似乎无法让它工作。一旦我单击 BT ON 按钮,应用程序就会崩溃。

谁能给我有关如何修复代码的指示?

附上代码:

package com.example.jhonnysnewremote;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    BluetoothAdapter mybtadapter;
    Button btOn,btOff;
    //Intent btEnableIntent;
    //  int BT_REQ_CODE=1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(MainActivity.this, "Successful Launch ", Toast.LENGTH_SHORT).show();
        btOn =(Button) findViewById(R.id.BtOn);
        btOff =(Button) findViewById(R.id.BtOff);
        mybtadapter=BluetoothAdapter.getDefaultAdapter();
        BTon();
    }

    //@Override
    //protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    //if(requestCode==BT_REQ_CODE){
        //if(resultCode==RESULT_OK){
          //  Toast.makeText(getApplicationContext(), "Bluetooth is Enabled", Toast.LENGTH_LONG).show(); }
        //else if (resultCode=RESULT_CANCELED){
      //      Toast.makeText(getApplicationContext(), "Bluetooth was cancelled", Toast.LENGTH_LONG).show();  }
    //}
  //  }

    private void BTon() {
        btOn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             if(mybtadapter==null){
                 Toast.makeText(getApplicationContext(), "Bluetooth not supported", Toast.LENGTH_SHORT).show();}
             else if(!mybtadapter.isEnabled()) {
                     Toast.makeText(getApplicationContext(), "Trying to Enable Bluetooth.", Toast.LENGTH_SHORT).show();
                     // startActivityForResult(btEnableIntent,BT_REQ_CODE);}
                     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                     ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
                             new ActivityResultContracts.StartActivityForResult(),
                             new ActivityResultCallback<ActivityResult>() {
                                 @Override
                                 public void onActivityResult(ActivityResult result) {
                                     if (result.getResultCode() == Activity.RESULT_OK) {
                                         // There are no request codes
                                         Intent data = result.getData();
                                         Toast.makeText(getApplicationContext(), "Bluetooth is Enabled", Toast.LENGTH_LONG).show();
                                     }
                                     else if (result.getResultCode() == Activity.RESULT_OK) {
                                         Toast.makeText(getApplicationContext(), "Bluetooth was cancelled", Toast.LENGTH_LONG).show();
                                     }
                                 }
                             });

                     someActivityResultLauncher.launch(enableBtIntent);
                 }
            }
        });
    }
}


标签: javaandroidbluetooth

解决方案


推荐阅读