加载中…
相册专辑
加载中…
博文
android的媒体扫描是公认的慢。有时甚至能死掉。在深度分析后进行了深度修改。
修改的是android4.0-4.1版本的。其他版本暂时没有研究。主要说一下慢的地方跟改进的地方。
在andorid4.0中用进行真正系统文件遍历的类是mediascaner.cpp中的方法,如下
MediaScanResult MediaScanner::doProcessDirectory(
        char *path, int pathRemaining, MediaScannerClient &client, bool noMedia) {
    // place to copy file or directory name
    char* fileSpot = path + strlen(path);
    struct dirent* entry;

    if (shouldSkipDirectory(path)) {
        ALOGD('Skipping: %s', path);
        return MEDIA_SCAN_RESULT_OK;
    }

    // Treat all files as non-media in directories that contain a  '.nomedia' file
    if
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-09-22 16:20)

初衷是想实现一个有自定义显示效果的按钮

自定义显示效果就是选中或者按下按钮的时候显示自己的图片,这个效果用以下方法实现了:

在res/drawable下新建selector.xml文件

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-09-22 16:15)
标签:

android

launcher

杂谈

Launcher这个类乍一看,好多函数好多变量好像很复杂,不急,这需要慢慢的梳理。

从最上面的onCreate函数开始看起:

在这里为了调用framework那层中自己添加的一个类,所以使用了反射技术。

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

本人最近由于项目需要做了个android服务器,来实现android中Videoview的视频边解密边播放问题。
实现原理,在anroid上嫁个服务器,让 videoView的所有请求都指向这个服务器,还有考虑到在视频播放中用户点击那个进度条的问题,经过我耐心的研究发现,android在播放视频时,他缓冲的只是从当前播放位置到黄色的条结束位置,我之前产生个误区,总以为android是把之前播过的 内容都给缓存了,在重新播放之前播放过的 时,他会从缓存中播放,,。最后发现这是错的,android没有缓存已经播放过的,如果你播放已经播放过的 他会重新请求服务器的。。在其中遇到个最大的问题就是,缓冲区一直不是真实的。。郁闷至极啊。。最后自己搭了个tomcate,然后去跟踪tomcat返回的信息,发现,有个响应头至关重要,否则你的服务器是无法快进,后退的 。那就是“range”这个响应头信息,必须设置成:“bytes 2345-34545/36765'不能少了'bytes '否则,会让你欲哭无泪啊。。撞墙的想法都有了。。我为此痛苦了两天。。。。我想这可能是android中的 设置是用range这个值去设置缓冲区的大小的 。。。哈哈哈。。。搞了一周终于搞定,可以用自己的服务器去读本地加密
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

runonuithread

it

分类: Andriond笔记
如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread,runOnUiThread可以帮助你在
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

asynctask

android

AsyncTask:稍作介绍,是一个可以异步发送更新主Activity的类,具体介绍请百度,谷歌。
// public class MyAny extends AsyncTask<integer,String,cn.android.AsyImage>{
//
// String st = 'abclaksdfjasdlg';
// long i =0;
// @Override
// protected void onPreExecute() {//该方法主要做一些初始化操作,比如连接网络等。
// // TODO Auto-generated method stub
// super.onPreExecute();
// p.setVisibility(p.VISIBLE);
// }
//
// @Override
// protected void onPostExecute(cn.android.AsyImage result) {//该方法得到下面方法的返回结果,并更新主界面。
// // TODO Auto-generated method stub
// super.onPostExecute(result);
// text.setText(st+'result');
// }
//
// @Override
// protected cn.android.AsyImage doInBackground(integer... params) {//异步操作方法,用来执行一些耗时工作。
// // TOD
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

handler

it

分类: Andriond笔记
对于Handler不多介绍,想必大家都已经熟练了,大致步骤就是有其他java类,或者子线程发送一个handler对象,由主Activity接收,并做更新界面操作。直接给出例子:
private Handler mPlayHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
//更新操作
};
};
子线程发送Handler
new Runnable() {
public void run() {
mPlayHandler.sendMessage(Message.ObthionMessage());
}
}
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

it

goolge

分类: Andriond笔记
android开发Application使用
大家都知道在android的项目目录中的AndroidManifest.xml中有:
<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android='http://schemas.android.com/apk/res/android'
      package='cn.android'
      android:versionCode='1'
      android:versionName='1.0'>
    <uses-sdk android:minSdkVersion='8' />

    <application android:icon='@drawable/icon' android:label='@string/app_name'>
        <activity android:name='.MainActivity'
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-02-27 19:25)
标签:

it

分类: Andriond笔记

Service分为本地服务,和远程服务,本地服务,是指在同一线程中的对Service的访问,这种方法一般用startService

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-02-27 19:24)
标签:

it

分类: Andriond笔记

1.       单划处理

 

首先生成手势库,用android

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
个人资料
zhong_hua_li
zhong_hua_li
  • 博客等级:
  • 博客积分:0
  • 博客访问:10,367
  • 关注人气:6
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
评论
加载中…
留言
加载中…
图片播放器
访客
加载中…
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有