`
xwangly
  • 浏览: 130735 次
  • 性别: Icon_minigender_1
  • 来自: 鄂州
社区版块
存档分类
最新评论
文章列表
 官网这么说的   4.3 百度坐标为何有偏移? 国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。 百度地图API中,有GPS坐标转百度坐标的功能 http://developer.baidu.com/map/wiki/index.php?title=androidsdk/guide/tool这个转换算法百度是不会公开的,而且百度也没有提供百度坐标转成GPS坐标功能,这里我用了取巧的办 ...
    最近项目更换了新的设计,实现了左右滑动、下拉刷新的功能,因此把这部分代码抽离出来作为DEMO。   附上两张图:     关键技术: 1.左右滑动。这个比较简单,使用ViewPager,子界面使用FragmentPagerAdapter 2.下拉刷新。使用精简的开源项目pulltorefresh 3.导航滚动。使用HorizontalScrollView实现。   工程源码见附件。 
比较简单,直接上代码 public static Bitmap compressImage(Bitmap bitmap) { if (bitmap != null) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 100, baos); int length = baos.size(); Logger.d("c ...
最近要做一个下拉刷新的功能,网上找了很多例子,也看了一些开源的下拉刷新项目,但是小例子比较简单,效果和稳定性都差强人意,而开源的项目又太庞大,看起来耗时费劲,所以只好综合一下各处的代码掌握其原理,自己实现一套下拉刷新功能。   该控件特点: 1.子控件必须是一个ScrollView或ListView; 2.支持自定义下拉布局; 3.自定义下拉布局可以不用处理下拉的各种状态(只需要实现几个接口即可),也可以自己处理各种下拉的状态。   先来看看效果图:       上代码: 首先看如何使用: 1.使用的布局: <LinearLayout xmlns:andr ...
因为图片的尺寸千差百异,要想加载不同的图片,又要保证不影响整体布局的美观,我们可以通过计算需要的尺寸来加载图片。 直接上代码:     public static synchronized Bitmap decodeSampledBitmapFromStream( InputStream in, int reqWidth, int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final Bi ...
最近的项目需要做一个如同微信中的腾讯新闻的功能,如下图所示:   直接上关键代码: 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_pare ...
Android2.3中Wifi的状态都是在WifiStateTracker中维护的,4.0中将Wifi的状态全部放到WifiStateMachine中维护了。这篇文章不去深究Wifi的问题,只以Wifi为例,来分析层次结构状态机的原理。WifiStateMachine继承于StateMachine,StateMachine是一个层次结构的状态机,它可以处理一些消息,并维护一个层次结构的状态。  先来看看状态是什么?状态很简单,只有自已的名字(如"Connecting"表示当前正在连接Wifi),然后还有一个处理函数processMessage,它接收一个Message参数, ...
Android2.3中Wifi的状态都是在WifiStateTracker中维护的,4.0中将Wifi的状态全部放到WifiStateMachine中维护的。今天不是深究Wifi的问题,只以Wifi为例,来分析层次结构状态机的原理。 WifiStateMachine继承于StateMachine,StateMachine是一个层次结构的状态机,它可以处理一些消息,并维护一个层次结构的状态。 先来看看状态是什么?状态很简单,只有自已的名字(如"Connecting"表示当前正在连接Wifi),然后还有一个处理函数processMessage,它接收一个Message参数,顾 ...

来电上报流程

 
最近项目在做一个双模手机,我负责电话框架层的移植,因此把2.3版的电话模块又梳理了一遍。 今天刚好趁等板子的时间(我们项目很穷的,8个人共用一块板子调试,我的个去啊,要知道刷一次机是很麻烦很费时的。) 把前段时间整理的来电上报流程给帖出来,供拍。   框架层的上报流程都是通过通知机制实现的,举个例子:A要监听B的状态,可以在A中实现一个Handler,然后将该Handler注册到B中。即设计模式之观察者模式。 电话部分的通知机制如下图所示: 图画的比较烂,不好意思从小就没学过美术(当年的美术课都被班主任占了)。 所有电话模块model的改变,都会反映到RIL层上,RIL层提供了 ...
Messenger:信使 官方文档解释:它引用了一个Handler对象,以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信),在服务端使用Handler创建一个Messenger,客户端持有这个Messenger就可以与服务端通信了。   以前我们使用Handler+Message的方式进行通信,都是在同一个进程中,从线程持有一个主线程的Handler对象,并向主线程发送消息。 而Android既然可以使用bindler机制进行跨进行通信,所以我们当然可 ...
Android MediaPlayer 的生命周期 MediaPlayer 的状态转换图也表征了它的生命周期,搞清楚这个图可以帮助我们在使用 MediaPlayer 时考虑情况更周全,写出的代码也更具健壮性。     这张状态转换图清晰的描述 ...
每天进步一点点之AsyncQueryHandler学习 AsyncQueryHandler:异步的查询操作帮助类,其实它同样可以处理增删改 1。AsyncQueryHandler的作用 查询其API便可知,它担供: startInsert startDelete startUpdate startQuery 这四个操作,并提供相对应的onXXXComplete方法,以供操作完数据库后进行其它的操作,这四个 onXXXComplete方法都是空实现,以便我们只需要去实现我们关注的操作。   2。为什么要使用AsyncQueryHandler 当然你也 ...
需求: Android自带的TabHost为橫向的,而且样式已经写死了,不能改变。 而我需要做一个纵向(垂直)的TabHost界面,达到如下效果: 使劲想套用API的TabHost,但是它里面的TabWidget的方向写死的,请看:   private void initTabWidget() { setOrientation(LinearLayout.HORIZONTAL); 只好自已重写一个TabHost布局,代码如下: package com.xwangly.tabhost; import java.util.ArrayList; ...
打电话请求流程 1.进入键盘界面(TwelvekeyDialer),点击dialButton发送ACTION_CALL_PRIVILEGED动作来启动OutgoingCallBroadcaster. 2.OutgoingCallBroadcaster对紧急号码进行处理后发ACTION_NEW_OUTGOING_CALL广播,由内部类OutgoingCallReceiver接收,由该类来启动InCallScreen。 3.InCallScreen的onCreate中调用initInCallScreen初始化打电话界面,registerForPhoneStates注册电话状态监听,由内部Handle ...
去电流程: 广播:action="android.intent.action.CALL" OutgoingCallBroadcaster.java接收,该类中先判断是否是紧急号码,是紧急号码则直接启动com.android.contacts.DialtactsActivity,并结束自己。 调用PhoneApp的wakeUpScreen唤醒屏幕 普通电话,则发送广播,由类部类OutgoingCallReceiver接收,该类启动InCallScreen转到通话界面 InCallScreen中的initInCallScreen初始化屏幕,然后registerForPhoneS ...
Global site tag (gtag.js) - Google Analytics