java - 在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);
}
}
});
}
}
解决方案
推荐阅读
- python - 在 Django 中查询外键模型
- javascript - Spotify 访问令牌在一种方法中可用,但在另一种方法中不可用
- node.js - 由于我是 nodejs 的新手,我无法使用 nodejs 在 aws lambda 的 tmp 位置创建文件
- html - 单击时反应野生动物园无法专注于输入
- flutter - Flutter assemblyDebug 长长的错误列表
- flutter - Flutter本地化中的语言结构问题?
- search - 替罪羊树信用说明
- c++ - 来自 libapt-pkg 的损坏的字符串
- r - 如何在添加新列 R 闪亮的反应数据表之前保存更改
- c - 使用 100% cpu 与使用最大可用线程