【Android基础】四、四大组件(二)

原创 2016年06月01日 15:27:00

3.Service
Service
AIDL
Service两种启动方式:
1)startService():onCreate方法只调用一次,每次开启服务都会回调onStart方法,开启服务的进程被杀死后会自动重新启动,手动杀死不会重新启动。
2)bindService():onCreate,onBind,onUnbind,onDestroy只调用一次,只能绑定一次,绑定后只能解绑一次,可以通过定义的接口调用Service中的方法,绑定的Activity销毁,则Service关闭,可以通过混合开启Serivce使服务运行于后台。
AIDL接口用于远程服务的访问,需要在相同的包下面,是通过隐式启动来启动。
电话录音机:
监听电话状态要用TelephonyManager对象, 是一种系统服务,监听的事件是电话响铃状态,PhoneStateListener是一个类而非接口。录音使用的是MediaRecoder对象

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
tm.listen(new listener(),PhoneStateListener.LISTEN_CALL_STATE);
class listener extends PhoneStateListener{  
        @Override  
        public void onCallStateChanged(int state, String incomingNumber) {  
            super.onCallStateChanged(state, incomingNumber);  
            switch (state){  
                case TelephonyManager.CALL_STATE_IDLE:  
                    System.out.println("空闲");  
                    if(recorder != null){  
                    //录音停止
                        recorder.stop();  
                        //释放资源
                        recorder.release();  
                        recorder = null;  
                    }  
                    break;  
                case TelephonyManager.CALL_STATE_RINGING:  
                    System.out.println("响铃");  
                    if(recorder == null){  
                        recorder = new MediaRecorder();  
//设置录音源来自麦克风                        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
//设置录音输出格式为3gp                      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
//设置录音输出文件 
recorder.setOutputFile(getFilesDir() + "/" + "luyin.3gp");  
//设置录音编码类型                        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
                       try{  
                       //录音准备
                            recorder.prepare();  
                        }catch (Exception e){  
                            e.printStackTrace();  
                        }  
                    }  
                    break;  
                case TelephonyManager.CALL_STATE_OFFHOOK:  
                    System.out.println("摘机");  
                    if(recorder != null){  
                    //开始录音
                        recorder.start();  
                    }  
                    break;  
            }  
        }  
    }  
}  

四、ContentProvider
ContentProvider
一般很少需要自定义ContentProvider,自定义ContentProvider的话,需要重写query,insert,update,delete等方法,分别返回Cursor,Uri,int类型的数据,这些方法在访问时通过ContentResolver对象调用,需要传入的参数包括Uri和相应方法所需要的参数,这个Uri标识了提供数据的ContentProvider,这个Uri是在清单文件中配置的android:authorities属性,Uri后面可以跟path,通过匹配Uri,用来区分对不同的数据表的操作,在修改过表的数据后,还要通过getContext().getContentResolver().notifyChange(uri,null);这样才能使ContentObserver观察到数据的变化。
访问ContentProvider通过ContentResolver调用相应方法,
使用ContentResolver为指定Uri注册一个ContentObserver派生类:getContentResolver.registerContentObserver(uri,notifyForDescendents,ContentObserver)

版权声明:本文为博主原创文章,未经博主允许不得转载。

手机拨接状态(PhoneStateListener之onCallStateChanged)

监听手机的状态可以使用PhoneStateListener对象,重写其中的onCallStateChanged,通过传入的状态判读来电的状态。要使用PhoneStateListener,在activi...

Android基础知识之四大组件Activity(四)保存Activity的状态

有时候,在我们使用Application的时候可能会遇到因横竖屏切换,或者系统回收内存等意外状况而销毁掉Activity,而再次创建,这时我们会发现,之前Activity的状态没有被保存下来,遇到这种...
  • lxawcf
  • lxawcf
  • 2015年08月02日 21:53
  • 176

主题:四,android四大组件基础介绍及打电话,发短信简单应用 &单元测试

1,本章是android入门最后一篇,从后面开始将进入进阶阶段。我也会加快更新速度。但愿能保持每天三篇博文的数量。但是是在保证质量的前提下。后面我还会发布一些实际开发中用到的应用案例。敬请关注! 应...

Android基础知识之四大组件Activity(二)一个Activity的生命周期?

参见Android的API文档可见如上一幅图,这幅图里很好的解释了Android生命周期,以及Activity的各种状态。...
  • lxawcf
  • lxawcf
  • 2015年07月30日 22:32
  • 255

Android基础四大组件详解

Android四大组件Activity,Service,BroadCastReceiver,ContentProvider详解

Android App开发基础篇—四大组件之Broadcast

Android 四大组件—组件间的通信方式Broadcast(广播)     前言:假设有这样一个场景:在程序中要将一条消息同时发送给多个接收者,比如应用中启动的多个Activity,或者系统中的其他...

【Android基础入门〖6〗】四大组件之ContentProvider

目录(?)[+] 简介说明自定义ContentProvider 封装的 SQLiteOpenHelper 用以操作数据库 注册访问数据在别的应用程序中亦同效果截图 ...

【Android基础入门〖5〗】四大组件之BroadcastReceiver

[+] 0  简介        BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的 广播。        在Andr...

【Android基础入门〖4〗】四大组件之Service

1  生命周期图   2 第一种 非绑定方式 startService 2.1 自定义 Service package com.demoservice;  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android基础】四、四大组件(二)
举报原因:
原因补充:

(最多只允许输入30个字)