文档章节

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

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 521
阅读 7
收藏 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
android 之service实现电话监听并录音

要实现电话监听,需要监听电话的状态,方法如下. ListenReceiver类: 收到电话广播时开启监听电话的服务 public class ListenReceiver extends BroadcastReceiver { public void onReceive(Co...

长平狐
2012/09/03
315
0
BroadCastReceiver(广播接收者的静态注册)简单使用例子

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

初来小修
2016/02/16
146
0
转 Android 实现自动接听和挂断电话功能

添加权限 main.xml PhoneUtils.java是手机功能类,从TelephonyManager中实例化ITelephony并返回,源码如下: package com.testTelephony; import java.lang.reflect.Field; import java.lan......

bidaround
2014/09/03
352
0

没有更多内容

加载失败,请刷新页面

加载更多

百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室...

深度学习之桨
42分钟前
2
0
扒站wget仿站

wget -c -r -p -np -k http://xxx.com/xxx 其中: -c, --continue (断点续传) 接着下载没下载完的文件 -r, --recursive(递归) specify recursive download.(指定递归下载) -p, --page...

临江仙卜算子
44分钟前
2
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
今天
3
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
4
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部