友录项目总结(soundpool,Dialog,date,simpledateformate,calendar的使用方法)

来源:互联网 发布:口袋妖怪复刻源码 编辑:程序博客网 时间:2024/06/11 13:29
广播接受者:(有序广播)
动态注册:在哪个activity中注册,就会在开启这个界面的时候才会注册这个广播

接受者(只有那个注册的组件激活了,广播才激活,宿主死亡,广播死亡;)
静态注册:(长住型广播,与组件没有关系,收到广播之后10s之后销毁,再收到广播

,在创建一个广播)
订阅广播:使用intentflater进行订阅;

截获短信;

忽略当前的有序广播,使系统的短信应用不在接收该短信:
abortBroadcast();
数据库中插入需要:
ContentValues values=new ContentValues();
两个activity跳转
intent;
String action=intent.getAction();
绘制edittext文本;
pendingintent;
一个广播接收器可以接收多个


日期格式化;

(信息解读方法)
soundpool;
动态添加布局;
:lruchache;spasearray;
========================
1短信聊天;(信息解读方法)

// 短信会话Uri

public static final Uri CONVERSATION_URI = Uri
.parse("content://mms-sms/conversations");

--查看所有的会话(thread表)
根据uri查询我们想要的列,封装成一个conversation对象

--查看会话下的所有短信(sms表)根据thread查看对应的sms;

public static final Uri SMS_URI = Uri.parse("content://sms");

提取出短信内容,封装成短信对象(既有收件箱的短信.还有发件箱的短信)

--实时聊天
1)接收短信  如果我们收到短信,系统会发出有序广播,我们注册广播接受者,设

置优先级比较高,来拦截系统发出的广播,并接受到广播后,abort(忽略这条广播,

不向下传递,就系统的就接受不到这条信息了,也就不会存放到收件箱中了),qie

我们要把读到的短信写进收件箱这个表中,因为我们读取短信是从收件箱中读取

的; 同时我们接受到的信息要在chatActivity中显示,这个信息是从?????

2)发出短信: pendingintent; smsmsnsger.send 方法取发送信息,其中存在

pendingintent;我们自己要订阅这条短信,将短信存在发件箱,

2拨打电话;

打电话的实现调用的是系统的打电话的activity来实现打电话

soundpool;

3通话记录:(contacts.calls 表)

通话记录的删除和遍历


4通讯录模块
查看所有的通讯录(contact查出id--date)
编辑系统的通讯录的编辑
添加
删除
管理:lruchache;spasearray;


===================================================================
android 项目搭建模式:mvc
有利于项目的解耦;面向对象的程序开发追求的目标;
m:model模型层;业务处理,数据库的访问;
 biz:bisiness(业务逻辑处理)
 dao data access object(数据访问层)
 entity(实体数据,减少数据访问时,参数的个数)
v:view 视图层,(自定义view,视图文件)
c:controller;控制器activity,fragment;(调用m层的逻辑,然后控制view)
===================================================================
aidl;
ipc进程间通讯
start service;就算是组件死亡,service也存在

bindserivice;实现数据交互 ,同死


//bindservice 绑定成功后执行onbind方法,返回 ibinder的实现类,传递到

connection的binder 参数中;

======================================================
广播:
======================================================
1发送广播方式:使用到 pendingintent的方法;来携带这个广播;
当接收广播的对象不同时,创建的pendingintent的方式也不相同;

有三种方式:
1发送给activity
2发送给service
3发送给broadcast

PendingIntent pIntentintent=PendingIntent.getBroadcast(context, 1,

intent, PendingIntent.FLAG_UPDATE_CURRENT);    

这里需要intent意图,这个intent添加action;
intent.setaction();
这个intent中可以封装想要携带的意图;

2接收广播的方法:
0)创建广播:自己写的广播继承brodcastreceiver;
在这里存在一个方法 onreceive方法;当我们接受到这个广播的时候会执行这个

方法;
在这个方法中会将意图传递过来,解析这个意图,将里边存储的东西取出来
1)注册广播;
register
2)广播过滤器 intentfilter();添加action,过滤这个action;
intentfilter.addaction();判断接受的哪种类型的广播,进行相应的处理
如果是有序广播可以设置优先级;
3)通过intent.get exre可以获得发送广播是存储的数据;返回值类型是buddle

类型的, //如果要解析消息的话,要是用一个消息的协议:puds;
将消息内容存储在stringbuilder的数组中,该数组是不安全的,只可以在单线程

中使用;
=============================================================
绘制一个edittext文本:
=============================================================
1使用到了radius:绘制边角,一般是8dp
2使用到了stoke :描边;设置描边的宽度和颜色:width=1dp;color=;
3使用到了solid;填充色:edittext里边的颜色;
4padding: 里边内容距外边边框的距离;
============================================================
日期格式化方式:
============================================================
首先使用了三个api对象;
1date类
1)无参构造方法,得到的date是当前系统时间
Date date = new Date();
打印结果:
Thu Sep 08 19:18:40 CST 2016

2)对象()中使用System.currentTimeMillis()
Date now = new Date(System.currentTimeMillis());
获得系统当前时间,且无时无刻不放大;

3)Date date1=new Date(2015-1900,11,30,23,59,59);
传入指定的时间值,设置date为固定的对象;
2simpledateformate类
目的是,date创建的对象会显示具体的时间,而有时候,我们需要具体某一个时间,

不需要如:我们只需要小时和分钟,那我们就需要转换一下格式,就需要

simpledateformate

SimpleDateFormat format1 = new SimpleDateFormat("YYYY-MM-dd

HH:mm:ss");
(构造方法中的参数规定了转换的形式)
再调用farmate方法,参数传入date对象;

3calender类
calender类是一个抽象类,可以通过getinstace获得实例;
主要用途:
1)可以获得当前的日历,并通过calender.get();方法获得对应的时间日期;各条

(calender.day of month);得到这个月中的一天;
2)可以设置某一个日历的时间,calender.settimeinmiillis();然后通过这个

long类的后的到集体的某一天,然后可能执行相减的动作,求出差值;

==================================================================
缓存数据
==================================================================
1缓存bitmap时使用到了lrucahce;
1)建立lrucache对象
lrucache<Intenger,Bitmap> cache;
重写里边的insizeof方法;(当控件满了的时候,获得再要存进来的数据的大小,好

给这个数据腾出空间)
当我们通过cursor查出来所有的联系人时,将联系人的头像信息存放在缓存中,
使用 cache.put()方法存入
2)SparseArray<Contact> contactschache=new SparseArray<Contact>();
使用sparsearray 存入联系人的信息; add();
=================================================================
soundpool
=================================================================
1构造方法:
SoundPool提供了一个构造器,该构造器可以指定它总共支持多少个声音(也就

是池的大小)、声音的品质等。
SoundPool(int maxStreams, int streamType, int srcQuality):
第一个参数指定支持多少个声音;
第二个参数指定声音类型:(AudioManager.STREAM_MUSIC)
第三个参数指定声音品质。
2一旦建立了soundpool就使用多个重载的方法来加载音效
int load(Context context, int resld, int priority):从 resld 所对应

的资源加载声音。
3soundpool提供播放音乐的方法;
inplay();
int play(int soundID, float leftVolume, float rightVolume, int

priority, int loop, float rate):该方法的第一个参数指定播放哪个声音;

leftVolume、rightVolume指定左、右的音量:priority指定播放声音的优先级

,数值越大,优先级越高;loop指定是否循环,0为不循环,-1为循环;rate指

定播放的比率,数值可从0.5到2, 1为正常比率。
4soundPool.setOnLoadCompleteListener
soundpool是设置监听,使加载音乐完毕后执行这个方法的回调;
在这里进行播放音乐;
5release
在执行完播放后,调用soundpool的release方法释放资源;
==============================================================
Dialog类
==============================================================
1创建dialog对象,可以是自定义的,也可以使用系统的
1)系统的dialog
alertdailog.Builder builer=new alertDailog.Builder(context);
Dialog dailog= bilder.creat();
dailog.show();
2)如果是我们自己的布局,需要引入我们的布局
 //解析我们自己的布局
 View view=LayoutInflater.from(context).inflate

(R.layout.inflater_add_dialog, null);
//将这个布局设置到dialog上;
dialog.setContentView(view);
3)就是dialog的显示内容了
settitle;
setnagtivebutton,....
4)使用dialog之后实现了跳转时,要销毁dialog
dialog.dismiss();
================================================================
垃圾回收机制
================================================================
1当一个变量定义成static的方式,就不会被垃圾回收器进行回收;
所以释放后,可以使这个静态的设置成null;
================================================================
0 0
原创粉丝点击