zoukankan      html  css  js  c++  java
  • 【转】蓝牙通信-打开和关闭蓝牙设备

    原文网址:http://www.2cto.com/kf/201303/199175.html

    蓝牙(BlueTooth)要求的最低版本是android2.0,由于Android模拟器不支持蓝牙,运行蓝牙的有关应用必须在真机上测试运行。

    蓝牙是一种重要的短距离无线通信协议,广泛应用于各种设备(手机,医疗,汽车等)。蓝牙是比较常用的无线通信设备,早研究成为手机的标配。

    在Android中,与蓝牙有关的类和接口在android.bluetooth包中。其中BluetoothAdapter是蓝牙中的核心类,

    代表本地的蓝牙适配器设备。BluetoothAdapter类让用户能执行基本的蓝牙任务。例如: 初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个BluetoothDevice类,创建一个 BluetoothServerSocket类以监听其它设备对本机的连接请求等。

    当我们使用蓝牙时会先判断当前手机是否打开了蓝牙,然后在进行相应的处理。

    下面我们看看怎样打开蓝牙设备。

    1.我们调用时除了需要考虑API Level至少为5外,还需注意添加相应的权限,比如使用通讯需要在androidmanifest.xml加入,而开关蓝牙需要android.permission.BLUETOOTH_ADMIN权限。

    只要是有关蓝牙的应用程序这两个不可少。

    2JAVA主要代码:


    [java]
    package com.example.open_local_bluetooth; 
     
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.bluetooth.BluetoothAdapter; 
    import android.content.Intent; 
    import android.view.Menu; 
    import android.widget.Toast; 
     
    public class MainActivity extends Activity { 
     
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
     
            BluetoothAdapter mBluetoothAdapter = BluetoothAdapter 
                    .getDefaultAdapter(); 
            if (mBluetoothAdapter == null) { 
                Toast.makeText(this, "本机没有找到蓝牙硬件或驱动!", Toast.LENGTH_SHORT).show(); 
                finish(); 
            } 
            // 如果本地蓝牙没有开启,则开启  
            if (!mBluetoothAdapter.isEnabled()) { 
                // 我们通过startActivityForResult()方法发起的Intent将会在onActivityResult()回调方法中获取用户的选择,比如用户单击了Yes开启,  
                // 那么将会收到RESULT_OK的结果,  
                // 如果RESULT_CANCELED则代表用户不愿意开启蓝牙  
                Intent mIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
                startActivityForResult(mIntent, 1); 
                // 用enable()方法来开启,无需询问用户(实惠无声息的开启蓝牙设备),这时就需要用到android.permission.BLUETOOTH_ADMIN权限。  
                // mBluetoothAdapter.enable();  
                // mBluetoothAdapter.disable();//关闭蓝牙  
            } 
        } 
     
        @Override 
        protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
            // TODO Auto-generated method stub  
            super.onActivityResult(requestCode, resultCode, data); 
            if (requestCode == 1) { 
                if (resultCode == RESULT_OK) { 
                    Toast.makeText(this, "蓝牙已经开启", Toast.LENGTH_SHORT).show(); 
                } else if (resultCode == RESULT_CANCELED) { 
                    Toast.makeText(this, "不允许蓝牙开启", Toast.LENGTH_SHORT).show(); 
                    finish(); 
                } 
            } 
     
        } 
     
        @Override 
        public boolean onCreateOptionsMenu(Menu menu) { 
            // Inflate the menu; this adds items to the action bar if it is present.  
            getMenuInflater().inflate(R.menu.main, menu); 
            return true; 
        } 
     

    package com.example.open_local_bluetooth;

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

    public class MainActivity extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
        .getDefaultAdapter();
      if (mBluetoothAdapter == null) {
       Toast.makeText(this, "本机没有找到蓝牙硬件或驱动!", Toast.LENGTH_SHORT).show();
       finish();
      }
      // 如果本地蓝牙没有开启,则开启
      if (!mBluetoothAdapter.isEnabled()) {
       // 我们通过startActivityForResult()方法发起的Intent将会在onActivityResult()回调方法中获取用户的选择,比如用户单击了Yes开启,
       // 那么将会收到RESULT_OK的结果,
       // 如果RESULT_CANCELED则代表用户不愿意开启蓝牙
       Intent mIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
       startActivityForResult(mIntent, 1);
       // 用enable()方法来开启,无需询问用户(实惠无声息的开启蓝牙设备),这时就需要用到android.permission.BLUETOOTH_ADMIN权限。
       // mBluetoothAdapter.enable();
       // mBluetoothAdapter.disable();//关闭蓝牙
      }
     }

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      // TODO Auto-generated method stub
      super.onActivityResult(requestCode, resultCode, data);
      if (requestCode == 1) {
       if (resultCode == RESULT_OK) {
        Toast.makeText(this, "蓝牙已经开启", Toast.LENGTH_SHORT).show();
       } else if (resultCode == RESULT_CANCELED) {
        Toast.makeText(this, "不允许蓝牙开启", Toast.LENGTH_SHORT).show();
        finish();
       }
      }

     }

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
     }

    }

    3配置文件:AndrodManifest.xml


    [html]
     
    http://schemas.android.com/apk/res/android" 
        package="com.example.open_local_bluetooth" 
        android:versionCode="1" 
        android:versionName="1.0" > 
     
        <uses-sdk 
            android:minSdkVersion="8" 
            android:targetSdkVersion="17" /> 
         
         
     
        <application 
            android:allowBackup="true" 
            android:icon="@drawable/ic_launcher" 
            android:label="@string/app_name" 
            android:theme="@style/AppTheme" > 
            <activity 
                android:name="com.example.open_local_bluetooth.MainActivity" 
                android:label="@string/app_name" > 
                 
                     
     
                     
                 
             
         
     
     


    http://schemas.android.com/apk/res/android"
        package="com.example.open_local_bluetooth"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
        
       

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.open_local_bluetooth.MainActivity"
                android:label="@string/app_name" >

  • 相关阅读:
    C# WinForm下,隐藏主窗体,只在进程管理器中显示进程,在任务栏,状态栏都不显示窗体的方法
    C#全能数据库操作类及调用示例
    多个汇总列转换为行记录 mssql
    Oracle 10g创建数据库 用户等基本操作
    Jquery基本选择器 层次选择器 过滤选择器 表单选择器使用示例 带注释
    SQL与ORACLE的外键约束级联更新和删除
    C# 屏幕监控 自动截屏程序 主窗体隐藏,仅在进程中显示
    图文讲解VS2010程序打包操作 安装卸载
    查表法按日期生成流水号 mssql
    给DataTable添加主键 几何级提升Select筛选数据的速度
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4999299.html
Copyright © 2011-2022 走看看