06 2012 档案
摘要:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5配套开发。使用PhoneGap只比为每个平台分别建立应用程序好一点点,因为虽然基本代码是一
阅读全文
摘要:public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState)当一个Fragment对象被作为一个View对象布局的一部分来填充时,就会调用该方法,通常用于设置一个Activity的内容视窗。在从布局文件的标签中创建该Fragment对象之后,可以立即调用该对象。注意:这时的调用是在该Fragment对象的onAttach(Activity)方法被调用之前,因此在这时所能做的所有的事情就是解析并保存它的属性设置。每次调用该方法时,该Fragment对象都被填充,即使是把它填充到一个新
阅读全文
摘要:手机系统测试基于当前智能手机的大盛世,出门见到的人十有八九拿的都是智能手机,不再是有按键的“砖头”----“诺基亚”,而且全触摸屏的智能手机。“火腿肠”----HTC、苹果、三星、摩托罗拉…….不同的公司,不同的操作系统,在出厂之前都需要手机系统测试员的参与。不少人把这项工作看成是空手套白狼的好事----玩手机也能拿钱!实际上并非如此。虽然手机系统测试员确实能从工作中得到乐趣,但是它仍然是一份严肃的工作,远不像人们想象的那样轻松。如果你想要成为手机系统测试员,本文将揭开这一年多以来我从事手机测试员的真实生活,为你揭开这项工作的帷幕一角。。。希望对你有些帮助 记得刚出校门出来找工作的时候,我们老
阅读全文
摘要:OK,从现在开始,我们会一个要点一个要点的把Android目前在开发上比较中要的几个知识点从源码开始详细分析,当然,在这里,我主要的是分析framework层下的代码,今天我给分析是关于ActivityManagerService.java这个类,分析内容主要为其内部原理,由于本类代码比较多,所以我不可能在一个篇幅中全部给细细分析与展示出来,所以我主要分析其内部原理:好了先看下面:package com.android.server.am; 18 19 import com.android.internal.R; 20 import com.android.internal.os.Batter
阅读全文
摘要:package com.weiny.mms; import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.util.Log; public class mmsTrack { int mFrequency; // 采样率 int mChannel; ...
阅读全文
摘要:package com.weiny.mms; public class mmsPlayer { private static mmsTrack mms=null; public native int openmms(String szUrl); public native int closemms();
/* * JNI INTERFACE */ public static int open(int frequency, int channel, int bit) { if(mms!=null) close(); mms=new mmsTrack(frequency...
阅读全文
摘要:很多想开发IOS,或者正在开发IOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。一、函数的对比helloworld方法Java 语言:public void helloWorld(bool ishelloworld) {
//干点啥
}C++语言:void helloWorld(bool is
阅读全文
摘要:前面的一节,介绍了如何组合使用Gallery和ImageView。但是,有的时候当你在gallery中点击一个图片,你可能不希望一个图片“突然地”在imageview中显示出来。例如,你可能希望给某个图片设置一些切换动画。此时,就需要使用ImageSwitcher和Gallery一起使用。下面展示如何使用ImageSwitcher。1. 创建一个工程,ImageSwitcher。2. main.xml中的代码。<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:andro
阅读全文
摘要:// Adding a toString method to PhoneNumber import java.util.*; public final class PhoneNumber { private final short areaCode; private final short prefix; private final short lineNumber; public PhoneNumber(int areaCode, int prefix, int lineNumber) { r...
阅读全文
摘要:不覆盖equals的情况1)类的每个实例本质上是唯一的;2)不关心类是否提供了“逻辑想等”的测试功能;3)超类已经覆盖了equals,从超类继承过来的行为对于子类也是合适的;4)类是私有的或包级私有的,可以确定他的equals方法永远不会被调用。应该覆盖equals的情况如果类具有自己特有的“逻辑想等”概念,而且超类还没有覆盖equals以实现期望的行为,这时我们就需要覆盖equals方法。这通常属于“值类”的情形。equals 方法在非空对象引用上实现相等关系l自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 l对称性:对于任何非空引用值 x 和y,当且仅当 y.
阅读全文
摘要:每个覆盖了equals方法的类中,也必须覆盖hashCode方法。如果不这样的话,就会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、HashSet和Hashtable。在引用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法都必须始终如一的返回同一个整数。在一个应用程序的多次执行过程中,每次执行所返回的整数可以不一致。如果连个对象根绝equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果
阅读全文
摘要:任何事情都存在其一定的双面性或者多面性,对于C++的开发者,内存资源是需要手工分配和释放的,而对于Java和C#这种资源托管的开发语言,更多的工作可以交给虚拟机的垃圾回收器来完成,由此C++程序得到了运行效率,却失去了安全。在Java的实际开发中,并非所有的资源都是可以被垃圾回收器自动释放的,如FileInputStream、Graphic2D等class中使用的底层操作系统资源句柄,并不会随着对象实例被GC回收而被释放,然而这些资源对于整个操作系统而言,都是非常重要的稀缺资源,更多的资源句柄泄露将会导致整个操作系统及其运行的各种服务程序的运行效率直线下降。那么如何保证系统资源不会被泄露了?在
阅读全文
摘要:在官方blog中,android工程师谈到了如何去选择apache client和httpurlconnection的问题: 原文见http://android-developers.blogspot.com/2011/09/androids-http-clients.html这里小结下几点。1) apache httpclient比较稳定点,少BUG,但由于API的关系,扩展改造麻烦点,所以android team现在不鸟这东西了基本2) httpurlconnection比较轻便,灵活,易于扩展,在2。2前有个BUG,见http://code.google.com/p/android/i.
阅读全文
摘要:表1展示了Android SDK中的一些与网络有关的API包名表1. Android SDK 网络包包 描述 API LevelJava.net 提供与联网有关的类,包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。该包是一个多功能网络资源。有经验的 Java 开发人员可以立即使用这个熟悉的包创建应用程序。 1java.io 虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他 Java 包中提供的 socket 和连接使用。它们还用于与本地文件(在与...
阅读全文
摘要:Android面试题1. 下列哪些语句关于内存回收的说明是正确的? (b )A、 程序员必须创建一个线程来释放内存B、 内存回收程序负责释放无用内存C、 内存回收程序允许程序员直接释放内存D、 内存回收程序可以在指定的时间释放内存对象2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException3. Math.round(11.5)等于多少(). Math.roun...
阅读全文
摘要:Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面。缺点是会受到网络信号的影响,从而导致访问速度慢。1.用WebView来显示HTML代码2.允许WebView执行JavaScript webView.getSettings().setJavaScriptEnabled(true);3.获取到HTML文件,也可从网络中获取 webView.loadUrl("file:///android_asset/index.html"); //HTML文件存放在assets文件夹中4.添加一个对象, 让
阅读全文
摘要:首先,说一下SQLite的概念:SQLite 是一个开源的嵌入式关系数据库,它可以减少应用程序管理数据的开销 , SQLite 可移植性好 、 很容易使用 、 很小 、 高效而且可靠 。目前在Android 系统中集成的是 SQLite3 版本 ,SQLite 不支持静态数据类型 , 而是使用列关系 。 这意味着它的数据类型不具有表列属性 , 而具有数据本身的属性 。 当某个值插入数据库时, SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成列类型。如果不能转换,则该值将作为其本身具有的类型存储。SQLite 支持 NULL 、INTEGER 、 R
阅读全文
摘要:经过了一番折腾,忙忙碌碌了一下午,终于搞明白了Android软件界面嵌入广告的方法,以下我以嵌入有米广告为例小结一下:步骤一,下载有米广告SDK,将 youmi-android.jar 导入想要嵌入广告的的工程中。1. 右键您的工程根目录,选择“Properties”2. 在左面板中选择“Java Build Path”3. 然后选择“Libraries”标签4. 点击“Add External JARs„”5. 选择 youmi-android.jar 的目录路径.6. 点击“OK”即导入成功步骤二,在AndroidManifest.xml文件中配置用户权限。请务必配置以下权限,否则将有可能
阅读全文
摘要:在一个项目中,常常需要频繁的分页,所以有必要实现一个封装的类来统一管理实现。首先看下效果图:从上图我们可以看出,这里是将listview中的数据通过底下的分页工具实现分页显示。那我们接下来先贴出代码:1、实现布局,这里有两个布局文件,第一个主布局文件main.xml<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/whole_region"android:layout_width="fill_parent&qu
阅读全文
摘要:今天和同事共同讨论了一个关于WebView中的文本控件去获得系统联系人的功能,之前单纯的以为只是点击文本框的时候弹出系统联系人Activity就ok了。立马浮现的想法就是在java方法中实现跳转功能,然后通过Js事件调用java方法,后面才知道选中某个联系人之后还要获得联系人号码赋给文本框。当时我就单纯的以为应该实现不了吧,但后来同事一提醒,如果传递号码作为客户端页面一个Js事件的参数然后为文本框赋值的话咧。这样确实是可行的,但java调用客户端Js的方法入口在哪里咧(必须是在关闭系统联系人之后,重现展现含有WebView的Activty时调用),说到这里应该有部分人会想到一个方法:onAct
阅读全文
摘要:这阵子在做Lephone的适配,测试组提交一个bug:标题栏的文字较长时没有显示完全,其实这并不能算个bug,并且这个问题在以前其他机器也没有出现,只是说在Lephone的这个平台上显示得不怎么美观,因为联想将原生的标题栏UI进行了修改。修改的过程中遇到了一个难题,系统自带的那个标题栏进度总能够到达100%后渐退,但是我每次最后到100%那一段显示不全,尝试了用线程程序死了卡主了不说,还是一样的效果,后来同事一句话提醒了我用动画。确实是这样我猜系统的也是这样实现的,等进度到达100%后,用动画改变它的透明度就ok了。实现的效果:标题栏显示网页标题并且滚动,并且用进度条显示网页的加载进度(重新.
阅读全文
摘要:1. 使用envsetup.sh脚本初始化编译环境$ source build/envsetup.sh也可以使用'.'去替换source,这样可以少输入几个字符:$ . build/envsetup.sh2. 选择目标平台选择目标平台使用lunch命令,输入lunch命令时可以指定平台,如果你没有指定平台,稍候会出现一个平台列表,你可以选择其中一个。$ lunch full-eng3. 编译选择好平台之后,你就可以编译了。$ make -j4GNU Make支持并行编译处理,在多核处理器下,加上-j参数能明显加快编译速度。本文参考来自android官网:http://sourc
阅读全文
摘要:在Android中显示网页主要有两种方式,一种是在Activity里面直接显示网页,另一种是调用浏览器显示网页。方式不同,使用的方法也不同,下面我们分别讲解。(一)在Activity里面直接显示网页1.在Manifest.xml文件里添加Inter网访问权限:<uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>2.在main.xml布局文件里声明一个WebView空间<WebView android:id="@+id/webView0
阅读全文
摘要:本文将介绍如何下载android源码树1. 安装RepoRepo它对git命令做了一些封装,让git更容易使用,要安装,初始化和配置Repo,需要如下几步:(1)在你的home目录下创建bin目录:$ mkdir ~/bin
$ PATH=~/bin:$PATH(2)下载Repo脚本并且确保它可执行:$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo2. 初始化一个Repo客户端Repo安装完成后,你现在就可以使用它来下载android源代码了
阅读全文
摘要:官方推荐ubuntu版本是64位的Ubuntu LTS (10.04)一、建立Android基本开发环境在Linux中建立Android开发环境,通常你需要一下几样东西:Python 2.5 -- 2.7GNU Make 3.8.1 -- 3.8.2Gingerbread或以后的版本需要安装JDK6,Froyo或更老版本安装JDK5就可以了。Git 1.7或以上版本详细步骤如下:1. 安装JDKJDK6:$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt
阅读全文
摘要:最近要在mac上开发ios程序,所以买了台mac book.今天在上面用我的希捷移动硬盘的时候发先,挂载上去是只读的。到网上找了半天的试过各种的方式都加载不上去,我没有用第三方的软件。后来看了看移动硬盘发现里面又希捷带的软件。里面就带了ntfs的驱动。装完重启就好了。
阅读全文
摘要:注:本文译自:http://developer.android.com/guide/topics/graphics/2d-graphics.htmlAndroid框架API提供了一组2D描画API,使用这些API能够在一个画布(canvas)上渲染自己的定制图形,也能够修改那些既存的View对象,来定制它们的外观和视觉效果。在绘制2D图形时,通常要使用以下两种方法中的一种:1.把图形或动画绘制到布局中的一个View对象中。在这种方式中,图形的绘制是由系统通常的绘制View层次数据的过程来处理的---只需简单的定义要绘制到View对象内的图形即可。2.把图形直接绘制在一个画布对象上(Canvas
阅读全文
摘要:在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。列表的显示需要三个元素:1.ListVeiw 用来展示列表的View。2.适配器用来把数据映射到ListView上的中介。3.数据具体的将被映射的字符串,图片,或者基本组件。根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种.
阅读全文
摘要:mmsplayer V2.0 近期发布。这次升级有哪些优越?1.首先是依赖库去掉了iconv,使用系统原生的编码转换环境2.文件大小,从以前的1.4M变成现在的0.4M的so3.把所有平台的代码都整合了,包括线程等等都在C中实现,把所有的接口调用都简化了。你只需要调用open,的接口就可以打开,调用close就可以关闭.4.架构清晰,除了android版本的jni的接口使用了C++,其他的版本都是基于C语言完成。没有使用stl等等C++类库来编写。5.包含所有的源码。6.增加购买方式,针对一些刚创业的朋友,增加了购买库的方式(即不含源码,只提供.a库文件).如果仍需要买源码的话,V2的版本可能
阅读全文
摘要:AudioMedia_ios.h//
// AudioMedia_ios.h
// mmsplayer
//
// Created by Weiny on 12-4-4.
// Copyright (c) 2012年 Weiny Zhou. All rights reserved.
// #ifndef mmsplayer_AudioMedia_ios_h
#define mmsplayer_AudioMedia_ios_h
#include "wdef.h" typedef void* wAudio; #ifdef __cplusplus
extern "C&q
阅读全文
摘要:目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步: 一般我们都是通过硬编码来增加菜单项的,例如我们之前介绍的。google为此提供了一种更便利的方式,就是在/res目录下创建menu文件夹在menu目录下使用与menu相关的元素定义xml文件,文件名任意,android会自动为其生成资源ID。例如:R.menu.itemmenu对应menu目录的itemmenu.xml资源文件使用x
阅读全文
摘要:android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因此我没将其作为核心类。下面一一介绍:线程的魔法师 LooperLooper的字面意思是“循环者”,它被设计用来使一个普通线程变成Looper线程。所谓Looper线程就是循环工作的线程。在程序开发中(尤其是GUI开发中),我们经常会需要一个线程不断循环,一旦有新任务则执行,执行完继续等待下一个任务,这就是Looper线程。使用Looper类创建Looper线程很简单:View Code通过上面两行
阅读全文
摘要:把源码解压放在android.jar所在目录的sources里即可 比如我是基于android4.0.3开发,android.jar所在目录为D:/Program Files/android-sdk-windows/platforms/android-15,在这个目录下新建文件夹sources,将源码放入其中即可,打开eclipse后,ADT会自动关联到源码。 另外,当我们也可以用Android SDK Manager下载源码,它会自动下载关联源码。
阅读全文
摘要:菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机甚至都要有一个"Menu"键,由此可见菜单在Android程序中的特殊性。Android SDK提供的菜单有如下几种:选项菜单:最常规的菜单,android中把它叫做option menu子菜单:android中点击子菜单将弹出悬浮窗口显示子菜单项。子菜单不支持嵌套,即子菜单中不能再包括其他子菜单。上下文菜单:android中长按视图控件后出现的菜单,windows点击右键弹出的菜单即上下文菜单图标菜单:这个比较简单,就是带icon的菜单项,需要注意的是子菜单项、上下文菜单项、扩展
阅读全文
摘要:public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)当View对象相关的上下文菜单显示的时候,系统会调用该方法。跟onCreateOptionMenu(Menu, MenuInflater)不同,这个方法在上下文菜单每次显示的时候,都会被调用,并且应该被填入对应的View对象。使用onContextIntemSelected(android.view.MenuItem)方法来获取被选择的菜单项。这个方法的默认实现是调用Activity.onCreateCon
阅读全文
摘要:1.简单工厂(Simple Factory)部分*针对接口编程可以隔离掉系统以后可能发生的一大堆改变。*用静态方法定义的工厂被成为静态工厂,这样就不用使用创建对象的方法来实例化对象,使用方便。但是这样做的缺点是无法通过继承来改变创建方法的行为。*简单工厂不是一种设计模式,但是它比较常用。2.工厂方法(Factory Method)模式部分----芝加哥风味匹萨店----public class ChicagoPizzaStore extends PizzaStore {
Pizza createPizza(String item) {
if ("cheese".equals
阅读全文
摘要:在移植nand flash驱动之前,我们要先熟悉u-boot中nand flash驱动架构以及nand flash操作原理。在u-boot启动过程中调用了nand_init函数,这就是nand flash驱动初始化的入口点。#if defined(CONFIG_CMD_NAND) puts ("NAND: "); nand_init(); /* go init the NAND */#endif我们看,这个函数被调用的前提条件是CONFIG_CMD_NAND宏被定义,所以如果你要操作nand flash,这个宏一定要在配置文件中被定义,我们先记在这里。进入nand_ini.
阅读全文
摘要:在编写一个应用程序时,正确的考虑图形需求是至关重要的。最好是根据不同的图形任务来使用合适的图形技术。例如:相对静态应用程序而言,交互游戏应用的图形和动画会有很多差异。以下我们会讨论在Android平台上可以使用的几种图形描画的选项,以及它们最适用的场景。Canvas and DrawablesAndroid平台提供一组View可视构件,它们提供与用户交互的一般化功能。还可以扩展这个可视构件,来修改它们的外观和行为。另外,还能够使用包含在Canvas或创建的Drawable对象中的各种描画方法来定制自己的2D渲染,如纹理按钮或帧动画等。Hardware Acceleration从Android3
阅读全文
摘要:public final boolean isAdded()如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false。public final boolean isDetached()如果该Fragment已经明确的从UI中分离,那么它返回true。也就是说,在该Fragment对象上使用FragmentTransaction.detach(Fragment)方法。该方法在API Level 13中被引入。public final boolean isHidden()如果该Fragment对象已经被隐藏,那么它返回true。默认情况下,Fragment
阅读全文
摘要:Media Frametowork是一个开源的媒体框架,在这里我们为什么要提到它,有几点,首先,它简化来媒体播放器的发展,其次,允许开发人员组装组建,再次就是能创造出更高质量与全新的播放器效果,这只是其一,更重要的是它给网络的货币化发展带来新的起点,以较低的成本与更轻便的周转方式来著称。 好了,细里,我先不详细介绍,后面会做几个DEMO给各位看看,先贴上主页吧:http://www.osmf.org/index.php,有时间,各位童鞋都去看看吧。。。。以后再详细介绍忘服来一个很重要的图:
阅读全文
摘要:平台:mini2440 + sst39vf1601 日期:2012-5-24四、nor flash移植分析源代码是为了更好理解芯片的操作时序。flash_init函数,我们在分析u-boot启动代码时就看见过调用了这个函数,这个函数主要是将flash扇区的起始地址保存在一个全局数据区中,之所以其中有if判断语句判断,是因为该芯片的每个扇区大小不一样,sst39vf1601和这款芯片不同,它的每个扇区大小都是一样的,所以我们需要对这部分代码做部分修改。sst39vf1601芯片知识补充:sst39vf1601它是块2M大小的nofflash芯片,它有32个块,每块大小为64K。如果以扇区来看,它
阅读全文
摘要:类说明1.嵌套类class Fragment.InstantiationException当有一个实例化错误时,会通过instantiate(Context, String, Bundle)方法抛出这个异常类。class Fragment.SavedState通过FragmentManager.saveFragmentInstanceState(Fragment)方法从一个Fragment对象实例中获取要保存的状态信息。2.继承的常量来自接口:android.content.ComponentCallbacks23.Public构造器和方法public Fragment()默认构造器。每个Fr
阅读全文