文档章节

android开发笔记之多媒体—TelephonyManager(电话管理器)

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 521
阅读 7
收藏 0
点赞 2
评论 0

电话管理器(TelephonyManager)

   电话管理器是一个管理手机通话状态,电话网络信息的服务类。
   该类提供了大量的getXxx()方法来获取电话网络的相关信息

获取TelephonyManager对象的方式:

context.getSystemService(Context.TELEPHONY_SERVICE);

接下来就可以获取相关信息:

   getDeviceId():获取设备编号

   getDeviceSoftwareVersion():获取系统平台的版本

   getNetworkOperator():获取网络运营商代号

   getNetworkOperatorName():获取网络运营商名字

   getPhoneType():获取手机网络类型

   getCellLocation():获取设备所在位置

   getSimCountryIso():获取SIM卡的国别

   getSimSerialNumber():获取SIM卡序列号

   getSimState():获取SIM卡的状态

   getLine1Number():获取本地号码(联通和电信卡是可以的)  

此外还提供了listen方法来监听通话状态,该方法可以监听手机来电信息。
manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
onCallStateChanged(int state,String incomingNumber)方法

    state:是电话的状态,取值有

    TelephonyManager.CALL_STATE_IDLE 挂电话和空闲状态

    TelephonyManager.CALL_STATE_OFFHOOK  摘机状态   

    TelephonyManager.CALL_STATE_RINGING 来电状态:电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。

incomingNumber:是来电电话号码

注意:
需要加上读取电话状态的权限

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 打电话的监听权限
 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 

实例:

这里写图片描述

核心代码:

public class MainActivity extends Activity {

    private TextView tv;
    private TelephonyManager telephony;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        //初始化TelephonyManager
        telephony = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("获取当前安卓版本:" + telephony.getDeviceSoftwareVersion()+"\n");
        stringBuffer.append("运营商:" + telephony.getNetworkOperatorName()+"\n");
        stringBuffer.append("SIM卡的序列号:" + telephony.getSimSerialNumber()+"\n");
        stringBuffer.append("本机号码:" + telephony.getLine1Number()+"\n");
        tv.setText(stringBuffer.toString());
        telephony.listen(new PhoneStateListener(){
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                // TODO Auto-generated method stub
                super.onCallStateChanged(state, incomingNumber);
                if (state == TelephonyManager.CALL_STATE_IDLE) {
                    Toast.makeText(MainActivity.this, "空闲状态", Toast.LENGTH_LONG).show();
                }else if (state == TelephonyManager.CALL_STATE_RINGING) {
                    Toast.makeText(MainActivity.this, "响铃状态", Toast.LENGTH_LONG).show();
                }else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                    Toast.makeText(MainActivity.this, "摘机状态", Toast.LENGTH_LONG).show();
                }
            }
        }, PhoneStateListener.LISTEN_CALL_STATE);
    }
}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.telephonemanager.MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout> 

© 著作权归作者所有

共有 人打赏支持
Mr_Nice
粉丝 0
博文 47
码字总数 39947
作品 0
广州
android自学笔记《三》——系统架构分析

下面是Android的系统架构图 翻译后 从上图中可以看出,Android系统架构为4层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下: 1)应用程序...

郭子
2012/02/03
0
5
android之通过phoneStateListener监听电话状态改变

效果图 当我们外部打电话过来的时候,当前的信息会自动的进行改变。 ------------------------------------------------------------------------------- package cn.com.chenzheng_java; i...

孙泽伟
2013/09/03
0
0
通过服务监控手机呼叫状态并进行录音

两个服务互相守护 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" </LinearLayout>开启服务和停止服务 package com.itheima.phonelistener; import android.ap......

chenruibing
2015/05/27
0
0
BroadCastReceiver(广播接收者的静态注册)简单使用例子

静态注册方式的特点:只要安装了静态注册的BroadCastReceiver应用,不管退不退出应用 广播接收者都在监听 //简单实现监听电话状态例子 静态注册方式的特点:只要安装了静态注册的BroadCastRe...

初来小修
2016/02/16
146
0
Android 第一课——Android架构

声明:本文是学习Android时从《Android 4编程入门经典》摘抄!仅仅是作为复习时查看的笔记! 1 Android是一个linux系统 Android 是一个基于 Linux 的开源的手机操作系统。它可以供任何打算使...

learn_more
2014/12/28
0
0
张高兴的 Xamarin.Android 学习笔记:(一)环境配置

  最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多。我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了。...

张高兴
2017/01/13
0
0
【转】关于Android体系架构和开发库的部分信息

Android架构支持开发者创建自己的联系人应用或者电话拨号程序。你可以公布自己应用的组件,让其他开发者在此基础上创建新的用户界面,进行功能扩展或者其他工作!这是多么奇妙啊? 剖析Andro...

barsoom
2014/02/28
0
0
TelephonyManager类

TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。 在应用程序中可以使用这些get方法获取相...

骑牛找牛
2014/02/03
0
1
Android 源码分析之旅1--系统架构与分析方法、工具

《Android 源码分析之旅》目录 apefwkall.png 《Android 源码分析之旅》的全部目录将作如下安排: 第1章节——本篇文章,将介绍一些基本的概念、方法、工具。 第2章节——着重介绍Binder IP...

猴亮屏
2017/10/19
0
0
android自学笔记《四》——应用程序结构分析

昨天在帖子里看到的一个分析方法,很简单,给大家分享下! 呵呵,由于我也是刚开始学习Android,还没有学到下面这些知识,这里就直接截图了。 看完他这个分析之后,我对Android程序有了一个简...

郭子
2012/02/03
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部