无需言 做自己 业 ,精于勤 荒于嬉.
- Android杂项 Android中的库
-
发表日期:2015-07-08 21:53:14 | 来源: | 分类:Android杂项
-
Android中的类库:
1、Android.util 核心使用包(看名字就知道啦),包括了低级类,例如,专用的容器、字符串格式化和XML解析程序。
2、Android.os 操作系统包,提供了基本操作系统服务的访问时间,例如,消息传递、进程间通信、始终函数和调试。
3、Android.graphic 图形API提供了支持画布、颜色和绘画原语的低级图行类,让你可以在画布上画画。
4、Android.text 用来显示和解析文本的文本处理工具。
5、Android.database 当使用数据库的时候,提供处理游标(cursor)所要求的低级类。
6、Android.content 内容API通过处理资源、内容提供器和包的服务,来管理数据访问和发布。
7、Android.view View是核心用户界面类。所有的用户界面元素都是使用一系列View来构造的,用来提供交互组件。
8、Android.widget 构建在View包的基础上,Widget类是已经创建好的用户界面元素,可以直接在应用程序中使用,他们包含列表、按键和布局。
9、Com.google.android.maps 一个高级API,提供了对本地地图控件的访问,可以再应用程序中使用这些控件,它包括MapView控件以及用来对嵌入的地图进行注释和控制的Overlay和MapController类。
10、Android.app 一个提供了对应用程序模型进行访问的高级包。应用程序包包含活动(Acitivity)和服务(Service)API,它形成所有应用程序的基础。
11、Android.provider 为了方便开发人员对某些标注的内容提供器进行访问,provider包提供了一些类,从而提供了对所有的android发行版中包含的标准数据库的访问。
12、Android.telephony telephony Api允许直接与蛇鞭的电话栈进行交互,让你可以直接打电话、监控电话状态以及收发SMS消息。
13、Android.webkit webKit 包提供了与基于Web的内容相关的API,包括一个WebView控件,可以再活动或许cookie管理器重嵌入一个浏览器。
除了Android API之外,android栈还包含了一些可以提供程序框架使用的c/c++库集合:
1、OpenGL 基于O喷GL ES ApI 的用来支持3D图形的库。
2、Free Type 支持位图和矢量字体渲染。
3、SGL 用来提供2D图形引擎的核心库。
4、Libc 为基于Linux的嵌入式设备而优化的标注C库。
5、SQLite 用来存储数据的轻量级关系数据库引擎
6、SSL 用来支持使用安全套接字层(Secure Sockets Layer)加密协议的安全Internet通信。
7、Android.location 基于位置的服务API让应用程序可以访问到设备当前的物理位置,不管使用什么样硬件或技术来确定位置,基于位置的服务都提供了对位置信息的通用访问。
8、Android.media 媒体API提供了对音频和视频文件的回收和录制的支持,包括留媒体。
9、Android.opengl android使用OpenGL ES API提供了强大的3d渲染引擎,这种酒可以使用它来创建动态的3D用户界面。
10、Android.hardware 当可用的时候,硬件API就会提供传感器硬件,包括摄像头、加速计和罗盘传感器。
11、Android.buetooth, android.net.wifi和android.telephony android也提供了对硬件平台的低级访问,包括蓝牙,wifi和电话硬件。
- Android杂项 Manifest.permission_group android所有授权常量2
-
发表日期:2015-07-08 21:49:05 | 来源: | 分类:Android杂项
-
常量
ACCOUNTS
直接通过统计管理器访问管理的统计
COST_MONEY
可以用来让用户花钱但不需要通过与他们直接牵涉的权限
DEVELOPMENT_TOOLS
与开发联盟特征相连的权限组
HARDWARE_CONTROLS
被用来提供直接访问硬件设备的权限
LOCATION
用来允许访问用户的当前位置的权限
MESSAGES
用来允许应用发送用户收到的被拦截的信息
NETWORK
用来提供访问网络服务的权限
PERSONAL_INFO
用于提供访问用户私人数据如联系人、日历、电子邮件等的权限
PHONE_CALLS
用于跟访问和修改拨号状态如截取去话信息、读取和修改电话状态等的权限
STORAGE
与SD卡访问相关联的权限组
SYSTEM_TOOLS
与系统API有关联的权限组
- Android杂项 Manifest.permission android所有授权常量
-
发表日期:2015-07-08 21:47:45 | 来源: | 分类:Android杂项
-
常量
<td style="border-color: windowtext;border-width: 1px;height: 36px;width: 237px;padding: 0 7px" wi
ACCESS_CHECKIN_PROPERTIES
允许在登入数据库的时候读写其中的属性表,并上传改变的值
ACCESS_COARSE_LOCATION
允许应用访问范围(如WIFI)性的定位
ACCESS_FINE_LOCATION
允许应用访问精确(如GPS)性的定位
ACCESS_LOCATION_EXTRA_COMMANDS
允许应访问额外的提供定位的指令
ACCESS_MOCK_LOCATION
允许应用创建用于测试的模拟定位提供者
ACCESS_NETWORK_STATE
允许应用访问网络上的信息
ACCESS_SURFACE_FLINGER
允许应用使用低版本视图的特征
ACCESS_WIFI_STATE
允许应用访问关羽Wi-Fi网络的信息
ACCOUNT_MANAGER
允许应用进入帐户认证
AUTHENTICATE_ACCOUNTS
允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统
BATTERY_STATS
允许应用去统计电源信息
BIND_APPWIDGET
允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据
BIND_DEVICE_ADMIN
必须通过关机接收者的请求来确保只有系统能够与之交互
BIND_INPUT_METHOD
必须通过InputMethodService的请求来确保只有系统能够与之绑定
BIND_WALLPAPER
必须通过WallpaperService的请求来确保只有系统能够与之绑定
BLUETOOTH
允许应用去连接蓝牙设备
BLUETOOTH_ADMIN
允许应用找到与之连接的蓝牙设备
BRICK
被请求废止设备(非常危险)
BROADCAST_PACKAGE_REMOVED
允许应用发出一个程序包被移除的广播消息
BROADCAST_SMS
允许应用发出一个收到短信的消息
BROADCAST_STICKY
允许应用发出一个与intent相连的消息
BROADCAST_WAP_PUSH
允许应用发出一个收到WAP PUSH的广播消息
CALL_PHONE
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序
CALL_PRIVILEGED
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码.
CAMERA
能够启动照相机设备的请求
CHANGE_COMPONENT_ENABLED_STATE
允许应用去改变一个应用是否是激活状态
CHANGE_CONFIGURATION
允许应用修改当前的配置,如本地设置
CHANGE_NETWORK_STATE
允许应用改变网络的连接状态
CHANGE_WIFI_MULTICAST_STATE
允许应用进入Wi-Fi的组播方式
CHANGE_WIFI_STATE
允许应用改变Wi-Fi的连接状态
CLEAR_APP_CACHE
允许应用清除所有安装在设备上的应用的缓存
CLEAR_APP_USER_DATA
允许应用清除使用者的信息资料
CONTROL_LOCATION_UPDATES
允许从广播设备来更新或不更新本地的消息
DELETE_CACHE_FILES
允许应用删除掉缓存文件
DELETE_PACKAGES
允许应用删除掉程序包
DEVICE_POWER
允许低权限的访问电源管理项
DIAGNOSTIC
允许应用诊断程序资源
DISABLE_KEYGUARD
允许应用禁用键盘锁
DUMP
允许应用从系统服务中恢复转储的信息
EXPAND_STATUS_BAR
允许应用扩大或缩小状态栏
FACTORY_TEST
如制造商测试的应用一样用终极权限用户运行
FLASHLIGHT
允许访问手电筒
FORCE_BACK
允许应用强制的返回操作而不论是不是最终的activity
GET_ACCOUNTS
允许应用访问账目服务中的统计清单
GET_PACKAGE_SIZE
允许应用查找出任何程序包使用的空间
GET_TASKS
允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行
GLOBAL_SEARCH
这个权限可以被内容提供者用来允许使用全程搜索他们的数据
HARDWARE_TEST
允许访问硬件及周边设备.
INJECT_EVENTS
允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口
INSTALL_LOCATION_PROVIDER
允许应用安装一个位置提供商到位置管理器中
INSTALL_PACKAGES
允许应用安装程序包.
INTERNAL_SYSTEM_WINDOW
允许应用打开被部分系统用户接口使用的窗口
INTERNET
允许应用打开网络套接口
KILL_BACKGROUND_PROCESSES
允许应用去呼叫killBackgroundProcesses(String).方法
MANAGE_ACCOUNTS
允许应用去管理帐户管理者中的重要清单
MANAGE_APP_TOKENS
允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用
MASTER_CLEAR
MODIFY_AUDIO_SETTINGS
允许应用修改全局音频设定
MODIFY_PHONE_STATE
允许改变拨打电话的状态-电源等
MOUNT_FORMAT_FILESYSTEMS
允许格式化可移除的存储仓库的文件系统
MOUNT_UNMOUNT_FILESYSTEMS
允许装备或解除可移除的存储仓库的文件系统
PERSISTENT_ACTIVITY
允许应用使它的activities更持久稳固
PROCESS_OUTGOING_CALLS
允许应用监督、限定或终止呼出的电话
READ_CALENDAR
允许应用读取用户的日历数据
READ_CONTACTS
允许应用读取用户的联系人数据
READ_FRAME_BUFFER
允许应用抓取屏幕和更多可获得的缓冲数据
READ_HISTORY_BOOKMARKS
允许应用去读取(非写)用户浏览历史和书签
READ_INPUT_STATE
允许应用去的当前键盘和控制的状态
READ_LOGS
允许应用读取低级别的系统日志文件
READ_OWNER_DATA
允许应用读取所有者的数据
READ_PHONE_STATE
允许读取电话的状态
READ_SMS
允许应用读取短信息.
READ_SYNC_SETTINGS
允许应用读取同步的设置
READ_SYNC_STATS
允许应用读取同步的统计数据
REBOOT
重新启动设备的请求
RECEIVE_BOOT_COMPLETED
允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息
RECEIVE_MMS
允许应用去监听多媒体信息并记录和对起进行处理
RECEIVE_SMS
允许应用去监听短消息并记录和对起进行处理
RECEIVE_WAP_PUSH
允许应用监听WAP push信息
RECORD_AUDIO
允许应用记录音频信息
REORDER_TASKS
允许应用改变任务的关系位置
RESTART_PACKAGES
已废弃使用
SEND_SMS
允许应用发送短消息.
- Android杂项 判断内存卡是否存在,获取内存卡根目录地址
-
发表日期:2015-02-21 21:31:35 | 来源: | 分类:Android杂项
-
示例1
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //判断sd卡是否存在 System.out.println(Environment.getExternalStorageDirectory()); //获取sd根目录/mnt/sdcard }
- Android杂项 控件所有属性
-
发表日期:2015-02-16 12:12:19 | 来源: | 分类:Android杂项
-
android:layout_toLeftOf=""
android:layout_toRightOf=""
android:layout_above=""
android:layout_below=""
android:layout_alignBaseline=""
android:layout_alignLeft=""
android:layout_alignTop=""
android:layout_alignRight=""
android:layout_alignBottom=""
android:layout_alignParentLeft=""
android:layout_alignParentTop=""
android:layout_alignParentRight=""
android:layout_alignParentBottom=""
android:layout_centerInParent=""
android:layout_centerHorizontal=""
android:layout_centerVertical=""
android:layout_alignWithParentIfMissing=""
android:layout_toStartOf=""
android:layout_toEndOf=""
android:layout_alignStart=""
android:layout_alignEnd=""
android:layout_alignParentStart=""
android:layout_alignParentEnd=""
android:layout_width=""
android:layout_height=""
android:layout_margin=""
android:layout_marginLeft=""
android:layout_marginTop=""
android:layout_marginRight=""
android:layout_marginBottom=""
android:layout_marginStart=""
android:layout_marginStart=""
android:layout_marginEnd=""
android:includeFontPadding=""
android:maxLength=""
android:shadowColor=""
android:shadowDx=""
android:shadowDy=""
android:shadowRadius=""
android:autoLink=""
android:linksClickable=""
android:numeric=""
android:digits=""
android:phoneNumber=""
android:inputMethod=""
android:capitalize=""
android:autoText=""
android:editable=""
android:freezesText=""
android:ellipsize=""
android:drawableTop=""
android:drawableBottom=""
android:drawableLeft=""
android:drawableRight=""
android:drawableStart=""
android:drawableEnd=""
android:drawablePadding=""
android:lineSpacingExtra=""
android:lineSpacingMultiplier=""
android:marqueeRepeatLimit=""
android:inputType=""
android:imeOptions=""
android:privateImeOptions=""
android:imeActionLabel=""
android:imeActionId=""
android:editorExtras=""
android:textSelectHandleLeft=""
android:textSelectHandleRight=""
android:textSelectHandle=""
android:textEditPasteWindowLayout=""
android:textEditNoPasteWindowLayout=""
android:textEditSidePasteWindowLayout=""
android:textEditSideNoPasteWindowLayout=""
android:textEditSuggestionItemLayout=""
android:textCursorDrawable=""
android:textIsSelectable=""
android:textAllCaps=""
android:id=""
android:tag=""
android:scrollX=""
android:scrollY=""
android:background=""
android:padding=""
android:paddingLeft=""
android:paddingRight=""
android:paddingTop=""
android:paddingBottom=""
android:paddingStart=""
android:paddingEnd=""
android:focusable=""
android:focusableInTouchMode=""
android:visibility=""
android:fitsSystemWindows=""
android:scrollbars=""
android:scrollbarFadeDuration=""
android:scrollbarDefaultDelayBeforeFade=""
android:scrollbarSize=""
android:scrollbarThumbHorizontal=""
android:scrollbarThumbVertical=""
android:scrollbarTrackHorizontal=""
android:scrollbarTrackVertical=""
android:scrollbarAlwaysDrawHorizontalTrack=""
android:scrollbarAlwaysDrawVerticalTrack=""
android:fadingEdge=""
android:requiresFadingEdge=""
android:fadingEdgeLength=""
android:nextFocusLeft=""
android:nextFocusRight=""
android:nextFocusUp=""
android:nextFocusDown=""
android:nextFocusForward=""
android:clickable=""
android:longClickable=""
android:saveEnabled=""
android:filterTouchesWhenObscured=""
android:drawingCacheQuality=""
android:keepScreenOn=""
android:duplicateParentState=""
android:minHeight=""
android:minWidth=""
android:soundEffectsEnabled=""
android:hapticFeedbackEnabled=""
android:contentDescription=""
android:onClick=""
android:overScrollMode=""
android:alpha=""
android:translationX=""
android:translationY=""
android:transformPivotX=""
android:transformPivotY=""
android:rotation=""
android:rotationX=""
android:rotationY=""
android:scaleX=""
android:scaleY=""
android:verticalScrollbarPosition=""
android:layerType=""
android:layoutDirection=""
android:textDirection=""
android:textAlignment=""
android:importantForAccessibility=""
android:labelFor=""
android:bufferType=""
android:text=""
android:hint=""
android:textColor=""
android:textColorHighlight=""
android:textColorHint=""
android:textAppearance=""
android:textSize=""
android:textScaleX=""
android:typeface=""
android:textStyle=""
android:fontFamily=""
android:textColorLink=""
android:cursorVisible=""
android:maxLines=""
android:maxHeight=""
android:lines=""
android:height=""
android:minLines=""
android:minHeight=""
android:maxEms=""
android:maxWidth=""
android:ems=""
android:width=""
android:minEms=""
android:minWidth=""
android:gravity=""
android:scrollHorizontally=""
android:password=""
android:singleLine=""
android:enabled=""
android:selectAllOnFocus=""
- Android杂项 字符串滚动
-
发表日期:2015-02-15 23:00:28 | 来源: | 分类:Android杂项
-
示例1
TextView tv1 = (TextView)findViewById(R.id.tv1); SpannableStringBuilder ssb = new SpannableStringBuilder(tv1.getText());//让字符串从右向左滚动 tv1.setText(ssb);
- 页面相关 浏览器缓存详解:expires,cache-control,last-modif
-
发表日期:2015-01-04 10:03:24 | 来源: | 分类:页面相关
-
1、Last-Modified
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修改的时间,格
式类似这样:
Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT
客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头(HttpRequest Header),询问该时间之后文件是否有被修改过:
If-Modified-Since:Tue, 24 Feb 2009 08:01:04 GMT
如果服务器端的资源没有变化,则自动返回HTTP304(NotChanged.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一
次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
注:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,会认为是个非法请求
2、Etag工作原理
HTTP协议规格说明定义ETag为“被请求变量的实体标记”(参见14.19)。简单点即服务器响应时给请求URL标记,并在HTTP响应头中将其传送到客户端,类似服务器端返回的格式:
Etag:“5d8c72a5edda8d6a:3239″
客户端的查询更新格式是这样的:
If-None-Match:“5d8c72a5edda8d6a:3239″
如果ETag没改变,则返回状态304。
即:在客户端发出请求后,HttpReponse Header中包含Etag:“5d8c72a5edda8d6a:3239″
标识,等于告诉Client端,你拿到的这个的资源有表示ID:5d8c72a5edda8d6a:3239。当下次需要发Request索要同一个URI的时候,浏览器同时发出一个If-None-Match报头(Http
RequestHeader)此时包头中信息包含上次访问得到的Etag:“5d8c72a5edda8d6a:3239″标识。
If-None-Match:“5d8c72a5edda8d6a:3239“
,这样,Client端等于Cache了两份,服务器端就会比对2者的etag。如果If-None-Match为False,不返回200,返回304(Not Modified) Response。
3、Expires
给出的日期/时间后,被响应认为是过时。如Expires:Thu, 02 Apr 2009 05:14:08 GMT
需和Last-Modified结合使用。用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端.当缓存中数据失效或过期,才决定从服务器更新数据。
4、Last-Modified和Expires
Last-Modified标识能够节省一点带宽,但是还是逃不掉发一个HTTP请求出去,而且要和Expires一起用。而Expires标识却使得浏览器干脆连HTTP请求都不用发,比如当用户F5或者点击Refresh
按钮的时候就算对于有Expires的URI,一样也会发一个HTTP请求出去,所以,Last-Modified还是要用的,而且要和Expires一起用。
5、Etag和Expires
如果服务器端同时设置了Etag和Expires时,Etag原理同样,即与Last-Modified/Etag对应的HttpRequestHeader:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和
WebServer发出的Last-Modified,Etag值完全一样;在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和Etag之后,服务器才能返回304.
6、Last-Modified和Etag
分布式系统里多台机器间文件的last-modified必须保持一致,以免负载均衡到不同机器导致比对失败
分布式系统尽量关闭掉Etag(每台机器生成的etag都会不一样)
Last-Modified和ETags请求的http报头一起使用,服务器首先产生Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改,来决定文件是否继续缓存
过程如下:
1.客户端请求一个页面(A)。
2.服务器返回页面A,并在给A加上一个Last-Modified/ETag。
3.客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。
4.客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。
5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。
注:
1、Last-Modified和Etag头都是由WebServer发出的HttpReponse Header,WebServer应该同时支持这两种头。
2、WebServer发送完Last-Modified/Etag头给客户端后,客户端会缓存这些头;
3、客户端再次发起相同页面的请求时,将分别发送与Last-Modified/Etag对应的HttpRequestHeader:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和WebServer发出的
Last-Modified,Etag值完全一样;
4、通过上述值到服务器端检查,判断文件是否继续缓存;
7、关于 Cache-Control: max-age=秒 和 Expires
Expires = 时间,HTTP 1.0 版本,缓存的载止时间,允许客户端在这个时间之前不去检查(发请求)
max-age = 秒,HTTP 1.1版本,资源在本地缓存多少秒。
如果max-age和Expires同时存在,则被Cache-Control的max-age覆盖。
Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果客户端的时间与服务器的时间相差很大,那么误差就很大,所以在HTTP 1.1版开始,使用Cache-
Control: max-age=秒替代。
Expires =max-age + “每次下载时的当前的request时间”
所以一旦重新下载的页面后,expires就重新计算一次,但last-modified不会变化
- 页面相关 禁止百度或其他搜索引擎/工具对页面转码
-
发表日期:2014-12-26 16:08:39 | 来源: | 分类:页面相关
-
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta http-equiv="Cache-Control" content="no-transform" />
- 页面相关 js 获取url各种属性
-
发表日期:2014-12-02 10:11:30 | 来源: | 分类:页面相关
-
设置或获取对象指定的文件名或路径。alert(window.location.pathname)
设置或获取整个 URL 为字符串。alert(window.location.href);
设置或获取与 URL 关联的端口号码。alert(window.location.port)
设置或获取 URL 的协议部分。alert(window.location.protocol)
设置或获取 href 属性中在井号“#”后面的分段。alert(window.location.hash)
设置或获取 location 或 URL 的 hostname 和 port 号码。alert(window.location.host)
设置或获取 href 属性中跟在问号后面的部分。alert(window.location.search)
获取变量的值(截取等号后面的部分)
var url = window.location.search;
// alert(url.length);
// alert(url.lastIndexOf('='));
var loc = url.substring(url.lastIndexOf('=')+1, url.length);
宁公网安备 64010402001209号