一、拨打电话

权限管理

思路

通过Intent设置Action为ACTION_DIAL或者 ACTION_CALL,通过intent启动直接拨打电话或者打开拨打电话界面。

示例代码

直接拨打电话

/**

* 拨打电话(直接拨打电话)

* @param phoneNum 电话号码

*/

public void callPhone(String phoneNum){

Intent intent = new Intent(Intent.ACTION_CALL);

Uri data = Uri.parse("tel:" + phoneNum);

intent.setData(data);

startActivity(intent);

}

跳转到拨打电话界面

/**

* 拨打电话(跳转到拨号界面,用户手动点击拨打)

*

* @param phoneNum 电话号码

*/

public void callPhone(String phoneNum) {

Intent intent = new Intent(Intent.ACTION_DIAL);

Uri data = Uri.parse("tel:" + phoneNum);

intent.setData(data);

startActivity(intent);

}

二、蓝牙状态监听

概述

在项目需求中碰到了需要Android设备和蓝牙进行数据交互和操作,需要实时监听蓝牙状态的变化,包括有蓝牙的打开、关闭、连接、断开连接。

考虑到是采用监听的方式,可以设置一个系统全局广播进行监听。

本地广播无法实现蓝牙状态监听

下面是对Android设备中对蓝牙进行状态监听的步骤及代码:

权限

配置文件中添加蓝牙权限:

设置广播类

示例代码如下:

class BluetoothMonitorReceiver : BroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {

var action: String? = intent?.action ?: return

when(action){

BluetoothAdapter.ACTION_STATE_CHANGED ->{

var blueState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,0)

when(blueState){

BluetoothAdapter.STATE_TURNING_ON ->{

Log.d("TAG","蓝牙设备正在打开")

}

BluetoothAdapter.STATE_ON ->{

Log.d("TAG","蓝牙设备已打开")

}

BluetoothAdapter.STATE_TURNING_OFF ->{

Log.d("TAG","蓝牙设备正在关闭")

}

BluetoothAdapter.STATE_OFF ->{

Log.d("TAG","蓝牙设备已关闭")

}

}

}

BluetoothDevice.ACTION_ACL_CONNECTED -> {

Log.d("TAG","蓝牙设备已连接")

}

BluetoothDevice.ACTION_ACL_DISCONNECTED -> {

Log.d("TAG", "蓝牙设备已断开")

}

}

}

}

Activity中注册代码

class MainActivity : AppCompatActivity() {

private var bluetoothMonitorReceiver:BluetoothMonitorReceiver? =null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

registerBluetoothReceiver()

}

/**

* 注册蓝牙广播

*/

private fun registerBluetoothReceiver() {

if(bluetoothMonitorReceiver == null) {

bluetoothMonitorReceiver = BluetoothMonitorReceiver()

}

var intentFilter = IntentFilter()

//监听打开蓝牙状态

intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED)

//监听蓝牙连接状态

intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED)

intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED)

registerReceiver(bluetoothMonitorReceiver, intentFilter)

}

override fun onDestroy() {

unregisterReceiver(bluetoothMonitorReceiver)

super.onDestroy()

}

打开和关闭蓝牙

打开蓝牙

/**

* 打开蓝牙

*/

private fun openBluetooth(){

//申请打开蓝牙弹窗

// var intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)

// startActivity(intent)

// 隐式打开蓝牙

var bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

bluetoothAdapter.enable()

}

关闭蓝牙

/**

* 关闭蓝牙

*/

private fun closeBluetooth(){

//打开设置中有关蓝牙的页面,不建议使用

// var intent = Intent(Settings.ACTION_BLUETOOTH_SETTINGS)

// startActivity(intent)

// 隐式关闭蓝牙

var bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()

bluetoothAdapter.disable()

}

android 蓝牙电话号码,Android拨打电话和蓝牙状态监听相关推荐

  1. android u盘挂载监听,Android SD卡及U盘插拔状态监听及内容读取

    本篇是通过系统方法来对sd卡及U盘插拔监听及数据获取,Android盒子端开发,有系统权限,当然,这个比较简单,知道具体方法,可以通过反射来实现. 先贴上效果图: 获取外置存储设备并监听插拔状态 获取 ...

  2. Android SD卡及U盘插拔状态监听和内容读取

    本篇是通过系统方法来对sd卡及U盘插拔监听及数据获取,Android盒子端开发,有系统权限,当然,这个比较简单,知道具体方法,可以通过反射来实现. 先贴上效果图: 获取外置存储设备并监听插拔状态 获取 ...

  3. 【Android】Android开发初学者实现拨打电话的功能,拨打电话app小demo实现

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先先给大家看一下最终实现的效果: ...

  4. 如何在Android中使用Intent拨打电话?

    本文翻译自:How to make a phone call using intent in Android? I'm using the following code to make a call ...

  5. android实现打电话功能,Android之简单实现拨打电话功能的方法

    手机在我们的日常生活中是最常见的,它的功能是拨打电话和发送短信,那么在Android开发中,我们如何通过该程序拨打电话呢?爱站技术频道给出了Android之简单实现拨打电话功能的方法,一起来看看吧! ...

  6. 虾扯蓝牙(一)获取蓝牙当前状态,监听蓝牙手动开关,代码开关蓝牙

    前言 半年没有更新博客了,首要原因就是我太懒了,其次是换了新工作,新环境,一直都处于适应与学习阶段,因为涉及到的领域以前都是没接触的–有幸外派到海尔做智能家居,第一次到这种大的公司来敲代码,很多东西都 ...

  7. android 通话状态监听(自定义接听挂断按钮与通话界面,根据公司的业务逻辑可以实现自己的来电秀功能)...

    前言: 因为公司需求,要自定义一款来电秀的app当做周边产品来配合主营的app业务. 之前因为赶项目,没时间整理这块,现在项目告一段落了,现在回头看看感觉这个功能还是挺有意思的,比较有针对性.电话呼入 ...

  8. android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听

    之前开发了一个WiFi,热点相关的应用.因为对这方面也不熟悉,刚开始找资料看书,但看明白实现时,发现随着android版本更新,相关api有较大改动,之前的代码不能用.经过一番探索,最后实现出来了,现 ...

  9. android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效

    Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...

最新文章

  1. object detection
  2. ubunto用户切换
  3. 关于Jsp页面的jstl标签的级联属性的异常。
  4. linux网络编程之通信协议格式
  5. 汽车上的一些名词缩写解释
  6. 11.4.3 NOW()函数
  7. SQL 汉字笔画排序 音序排序
  8. LeetCode1619删除某些元素后的数组均值(java)
  9. 独立性检验的基本思想和初步应用
  10. 关于arduino的各种网站
  11. 基于FPGA的DS18B20温度测量以及数码管显示
  12. [tensorflow] 关于 seed
  13. 微信开放平台 错误码61007: api is unauthorized to component
  14. js css3挂历撕掉动画特效
  15. JavaSE学习第一次笔记---Java入门知识
  16. 行政管理系统-基于php,基于thinkphp,yxcms
  17. 泰尔解说Google云计算业务:关键在于垄断
  18. 项目实训(三)unity游戏场景的搭建
  19. Linux输入绝对值 (Missing $ inserted,Missing delimiter)
  20. python 年会抽奖小程序

热门文章

  1. ue4掉落深渊返回地面
  2. SpringMVC学习-helloSpringMVC
  3. 此次边路调整系统推荐射手走哪路_此次边路的调整系统会推荐射手走什么路呢...
  4. tomcat安装不上
  5. 统计行业板块内涨停板数量,跟踪热点板块!股票量化分析工具QTYX-V2.6.0
  6. 对话华为鸿蒙掌舵人王成录:真正的第一,是掌握在自己手里的第一
  7. 吃鸡路线(map最短路径)
  8. java开发工程师转正述职报告
  9. 20191129每周精品之编程
  10. html修改word页边距,Word怎么只修改一页的页边距,而不影响同一文件中的其他页?...