首页 > 其他分享 >一上午力所,仍是一地鸡毛。andorid 蓝牙

一上午力所,仍是一地鸡毛。andorid 蓝牙

时间:2024-04-18 11:58:16浏览次数:24  
标签:Log BluetoothAdapter 蓝牙 debug 力所 andorid import android

 

package com.lingrui.btprint;

import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Set;
import java.util.UUID;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    public static String MY_UUID="";
    /**
     * 代表本地蓝牙适配器(蓝牙无线电)。BluetoothAdapter是所有蓝牙交互的入口。
     * 使用这个你可以发现其他蓝牙设备,查询已配对的设备列表,
     * 使用一个已知的MAC地址来实例化一个BluetoothDevice,
     * 以及创建一个BluetoothServerSocket来为监听与其他设备的通信。
     */
    private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    /**
     * 代表一个远程蓝牙设备,使用这个来请求一个与远程设备的BluetoothSocket连接,
     * 或者查询关于设备名称、地址、类和连接状态等设备信息。
     */
    private BluetoothDevice mBluetoothDevice = null;
    /**
     * 代表一个蓝牙socket的接口(和TCP Socket类似)。这是一个连接点,
     * 它允许一个应用与其他蓝牙设备通过InputStream和OutputStream交换数据。
     */
    private BluetoothSocket mBluetoothSocket = null;


    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    public ActivityResultLauncher<Intent> register;
    public void MyClick(View v){

    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        //点击蓝牙按钮
        Button btBlt = findViewById(R.id.bt_blt);
        btBlt.setOnClickListener(this);

        CheckBox ck_1= findViewById(R.id.ck_1);
     


        register = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult o) {
                int s = o.getResultCode();
                if (o == null) {
                    Log.e("error:", "打开失败");
                } else {
                    if (o.getResultCode() == RESULT_CANCELED) {
                        Log.d("debug", "用户取消");
                    }
                    if (o.getResultCode() == RESULT_OK) {
                        Log.d("debug", "蓝牙打开成功");
                    }
                }
            }
        });
    }
/*        BluetoothAdapter  bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        // 如果设备不支持蓝牙
        if (bluetoothAdapter == null)
        {
            Toast.makeText(getApplicationContext(), "该机型不支技蓝牙", Toast.LENGTH_SHORT).show();
            return;
        }
        // 设备支持蓝牙功能,启动蓝牙
        if (!bluetoothAdapter.isEnabled())
        {
            startBlueTooth.launch(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE));
            Toast.makeText(getApplicationContext(), "开启蓝牙", Toast.LENGTH_SHORT).show();
        }*/


    @Override

    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "蓝牙TEST", Toast.LENGTH_SHORT).show();
        try {
            Log.d("debug", "点击打开蓝牙按钮");
            BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            Log.d("debug", "22222222222");
            // 如果设备不支持蓝牙
            if (bluetoothAdapter == null) {
                Log.d("debug", "设备不支持蓝牙");
                return;
            }
            Log.d("debug", "3333333333");
            // 设备支持蓝牙功能,启动蓝牙
            if (!bluetoothAdapter.isEnabled()) {
                register.launch(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE));
                Log.d("debug", "启动蓝牙");
            }
            Log.d("debug", "44444444444");
            //取得蓝牙开启状态
            //一旦蓝牙已经打开,我们可以使用蓝牙适配器来搜索附近的蓝牙设备
            String tmp = String.valueOf(PackageManager.PERMISSION_GRANTED);
            Log.d("debug", tmp);
            Log.d("debug", "5111111");
            tmp = String.valueOf(android.Manifest.permission.BLUETOOTH_CONNECT);
            Log.d("debug", tmp);
            tmp= String.valueOf((ActivityCompat.checkSelfPermission(this, android.Manifest.permission.BLUETOOTH_CONNECT)));
            Log.d("debug", tmp);
            if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                Log.d("debug", "5555555555555");
                return;
            }
            Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
            //getBondedDevices 方法返回已经配对的蓝牙设备的集合。通过遍历集合,可以获取设备的名称和地址等信息
            for (BluetoothDevice device : pairedDevices) {
                String deviceName = device.getName();
                String deviceAddress = device.getAddress();
                // 处理找到的设备信息
                Log.d("debug", deviceName);
                Log.d("debug", deviceAddress);
                mBluetoothDevice = device;
            }
            /*步骤四:连接蓝牙设备
            在搜索到蓝牙设备后,我们需要选择一个设备进行连接*/
            BluetoothSocket socket = mBluetoothDevice.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID));
            socket.connect();

            //连接成功后,我们可以通过蓝牙连接发送打印指令给蓝牙标签打印机。
            OutputStream outputStream = socket.getOutputStream();

        }catch (IllegalStateException | IOException e) {
            Log.d("debug", e.getMessage());
            Toast.makeText(getApplicationContext(), "蓝牙打开失败:"+"\n"+e.getMessage(), Toast.LENGTH_SHORT).show();
        }




    }

    public void showPermissionDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth);
        builder.setMessage("需要读SD卡权限,用来获取照片\n需要获取手机状态权限,用来获取设备号\n需要获取联系人权限,用来...");
        builder.setTitle("权限说明");
        builder.setCancelable(true);
        builder.setPositiveButton("申请", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                ;
            }
        });
        builder.show();
    }



}

 

标签:Log,BluetoothAdapter,蓝牙,debug,力所,andorid,import,android
From: https://www.cnblogs.com/lrzy/p/18143201

相关文章

  • andorid usb网卡名分配过程
      1、网卡驱动加载log[142.122850][T1830]readdescriptors[142.127081][T1830]readstrings[142.194801][T180]xhci-hcdxhci-hcd.2.auto:xHCIHostController[142.203234][T180]xhci-hcdxhci-hcd.2.auto:newUSBbusregistered,assignedbusn......
  • 4-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK-设备作为TCP客户端,实现上位机
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节设备作为TCP客户端,连接上位......
  • 3-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK--设备作为TCP服务器,实现上位
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节设备作为TCP服务器,上位机T......
  • Android蓝牙打印(转)
    把Android变为蓝牙打印设备摘要随着移动技术的快速发展,蓝牙打印设备在各行各业中得到广泛应用。本文将介绍如何将Android设备转化为蓝牙打印设备,以便实现无线打印功能。首先,我们将了解蓝牙打印机工作原理,然后介绍如何在Android平台上开发相关功能,并提供代码示例。1.蓝牙打印机......
  • ANDROID STUDIO操作蓝牙打印机(转)
    前言工作中或多或少都会遇到困扰自己很久的问题,我也毫无例外,曾经在项目中对蓝牙打印这一块也困惑和迷茫过,最近在做项目重构的时候,翻看了之前写的代码,还是决定通过两篇文章详细阐述蓝牙连接打印机完成整个打印流程的操作,目的是对工作的一种总结,其次是输出。好比玩个压缩,又是绿......
  • 国产低功耗蓝牙芯片OM6650AM 支持蓝牙5.1协议栈与2.4GHz私有协议的双模军规级SoC芯片
    双模蓝牙是一种同时支持两种工作模式的蓝牙设备。常见的双模蓝牙设备包括同时支持传统蓝牙(ClassicBluetooth)和低功耗蓝牙(BluetoothLowEnergy,BLE)的设备。1、工作模式:双模蓝牙设备可以同时连接两个不同模式的设备,例如手机、平板等使用传统蓝牙连接,而智能手表、健身追踪器等使用......
  • ubuntu 系统连接了 蓝牙耳机但是没有声音也无法设置
    我的网卡是ax210带蓝牙。系统是ubuntu20.04$pactlload-modulemodule-bluetooth-discoverFailure:Moduleinitializationfailed虽然失败了,但是好像出来了下面的选项了:pavucontrol然后,我的蓝牙耳机就有声音了,在设置那里的声音选择输出就行。我也不懂。参考:https......
  • 基于51单片机智能电子秤称重压力检测阈值报警仪蓝牙设计20-412
    20-412、51单片机电子秤称重压力检测阈值报警仪系统+蓝牙上传设计产品功能描述:本系统由STC89C52单片机、LCD1602液晶显示、HX711称重传感器、蜂鸣器报警、按键、蓝牙模块及电源组成。1、LCD602液晶实时显示重量和设置阈值。2、按键可以设置报警阈值,阈值范围0-5000g,实际重量......
  • 基于STM32单片机智能便携式心率血氧体温检测仪蓝牙设计20-415
    20-415、STM32单片机便携式心率血氧体温检测仪系统+蓝牙上传设计产品功能描述:本系统由STM32F103C8T6单片机、LCD1602液晶屏显示、血氧传感器、DS18B20温度检测、蓝牙模块组成。1、液晶实时显示STM32采集到的心率、血氧和温度。2、心率和血氧采集成功直接显示相应的值,如果采......
  • 基于STM32蓝牙控制小车系统设计(一)
    项目介绍    “基于stm32f4的蓝牙控制小车”是一个基于意法半导体与ARM公司生产的STM32F4开发板的集电机驱动模块、电源管理模块、stm32f4主控模块、蓝牙串口通信模块、android控制端模块。电机驱动模块使用了两个L298N芯片来驱动4路电机,使能端连接4路来自......