欢迎来到Heck's Blog,专业承接拿站、企业建站、仿站、网上商城架构、门户网站搭建、空间域名注册、软件定制等项目。关注网络安全,因为专注,所以专业,懂得放弃,才能收获。有事请发邮件至i@heckjj.com,请记住本站网址:http://www.heckjj.com,多谢。
10月16
         我们用eclipse + ADT作为android开发工具,可以说是很方便的,在HelloActivity小程序里我们就感觉到eclipse功能的强大。那么,我们可以用 eclipse来开发android源码吗?如果我们直接把android源码里一个工程导入eclipse,一般来说都会出现错误,说许多类库(包)找 不到。
今天找到关于怎样使用eclipse来开发android源码的官方文档:
https://sites.google.com/a/android.com/opensource/using-eclipse
从该文档和实践可以总结出几点:
1、可以使用eclipse来编辑JAVA程序、检查错误(主要是类库包含和语法方面),但是不能在eclipse上编译运行android源码,还是得在shell中make(或mm或mmm)
2、android源码文件夹里提供有一些eclipse配置文件,
.claapath:eclipse工程的配置文件,方便我们直接把android源码相应的文件和JAVA包导入工程
android-formatting.xml和android.importorder:这个很重要,主要是用来规范我们的编码风格,更容易使我们的代码风格一致
3、把android源码作为一个工程导入eclipse时,必须注意两点
1)、新建的工程必须是java project,不能是android project,否则会破坏android源码(一般是多添加文件/文件夹)
2)、导入前最好检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹)

总的来说:
1、用eclipse来编辑代码、检查错误
2、不在eclipse上编译、运行android源码程序,只能在命令行通过make(或mm或mmm)编译android源码
3、可以在eclipse上调试android源码程序(原理:eclipse通过ddms服务器在emulator上进行调试),并可以单步调试、断点调试。
10月16
         目前有一个项目需要开发一个开机自启动的GTD应用程序来提醒用户的一些重要日程安排,对于这类应用,Android提供了一个BroadcastReceiver组件来对于应用程序的运行环境进行监听,并对于各种事件进行对应的处理。使用BroadcastReceiver十分简单,我们只需要在AndroidManifest.xml或者我们的代码中进行相应的注册(这也是Android开发的两种方式)。这样之后在广播事件到来时,我们就能通过重写BroadcastReceiver的onReceive()方法来执行相应的操作。

下面简单来演示如何开发开机自启动应用。
1.建立一个名为Boot的Android应用。
2.简单实现BootActivity的应用界面,在此实现了一个TextView的实例来开机后显示一句话内容。
TextView textView=new TextView(this);
textView.setText("这是一个开机自启动应用程序");
setContentView(textView);
3.创建一个BootBroadcastReveiver的类,实现了抽象类BroadcastReceiver。以下是整个代码。
10月15
public class ScreenTest extends Activity {    
        
    class SmsContent extends ContentObserver{    
        private Cursor cursor = null;    
        public SmsContent(Handler handler) {    
            super(handler);    
        }    
            
        /**  
         * @Description 当短信表发送改变时,调用该方法    
         *              需要两种权限  
         *              android.permission.READ_SMS读取短信  
         *              android.permission.WRITE_SMS写短信  
         * @Author Snake  
         * @Date 2010-10-12  
         */  
        @Override  
        public void onChange(boolean selfChange) {    
            // TODO Auto-generated method stub    
            super.onChange(selfChange);    
            //读取收件箱中指定号码的短信    
            cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc");
10月15
1.查看是否有存储卡插入
String status=Environment.getExternalStorageState();
if(status.equals(Enviroment.MEDIA_MOUNTED))
{
   说明有SD卡插入
}
2.让某个Activity透明

OnCreate中不设Layout

this.setTheme(R.style.Theme_Transparent);

以下是Theme_Transparent的定义(注意transparent_bg是一副透明的图片)

3.在屏幕元素中设置句柄
使用Activity.findViewById来取得屏幕上的元素的句柄. 使用该句柄您可以设置或获取任何该对象外露的值.
TextView msgTextView = (TextView)findViewById(R.id.msg);
   msgTextView.setText(R.string.push_me);

4:发送短信

            String body=”this is mms demo”;

           Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”smsto”, number, null));
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
            startActivity(mmsintent);
10月15
Android 多个APK共享数据(Shared User ID):

Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux 用户
(Android 系统是基于Linux)的.
所以不同APK(用户)间互相访问数据默认是禁止的.
但是它也提供了2种APK间共享数据的形式:
1. Share Preference. / Content Provider
APK可以指定接口和数据给任何其他APK读取. 需要自己实现接口和Share的数据.
本文对于这个不做详细解释

2. Shared User id
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是
可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的
数据库和文件.就像访问本程序的数据一样.
比如某个公司开发了多个Android 程序, 那么可以把数据,图片等资源集中放到APK  A中去. 然后
这个公司的所有APK都使用同一个User ID, 那么所有的资源都可以从APK A中读取.
10月15

内存溢出的解决办法

14:26编程杂谈  From: 本站原创
         昨天在模拟器上给gallery放入图片的时候,出现java.lang.OutOfMemoryError: bitmap size exceeds VM budget 异常,图像大小超过了RAM内存。
      模拟器RAM比较小,只有8M内存,当我放入的大量的图片(每个100多K左右),就出现上面的原因。由于每张图片先前是压缩的情况。放入到Bitmap的时候,大小会变大,导致超出RAM内存,具体解决办法如下:

                //解决加载图片 内存溢出的问题
                //Options 只保存图片尺寸大小,不保存图片到内存
                BitmapFactory.Options opts = new BitmapFactory.Options();
                //缩放的比例,缩放是很难按准备的比例进行缩放的,其值表明缩放的倍数,SDK中建议其值是2的指数值,值越大会导致图片不清晰
                opts.inSampleSize = 4;
                Bitmap bmp = null;
                bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],opts);                              
                ...              
                //回收
                bmp.recycle();

通过上面的方式解决了,但是这并不是最完美的解决方式。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]