任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

Android的SoundPool类使用与利弊 Android开发技术

  在开发Android软件中我们可能经常需播放多媒体声音文件,一般使用MediaPlayer类但该类占用资源较多,对于游戏等应用可能不是很适合,这里Android123描述下SoundPool类。SoundPool类在SDK的android.media.SoundPool,顾名思义是声音池的意思。主要播放一些较短的声音片段,可以从程序的资源或文件系统加载,相对于MediaPlayer类可以做到使用较少的CPU资源和较短的反应延迟。 SoundPool和其他声音播放类相比,其特点是可以自行设置声音的品质、音量、播放比率等参等。并且它可以同时管理多个音频流,每个流都有独自的ID,对某个音频流的管理都是通过ID进行的。SoundPool基本使用方法为:   创建一个SoundPool对象:new SoundPool(int maxStreams, int streamType, int srcQuality);  从资源或者文件载入音频流: load(Context  context, int resId, int priority);  播放声音play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) import android.media.AudioManager;import android.media.SoundPool; public class android123 extends Activity {private SoundPool snd;private int hitOkSfx;    /** Called when the activity is first created. */    @Override    public […]

Android标题栏TitleBar全攻略 Android开发技术

  很多细心的网友发现Android浏览器的标题栏TitleBar的功能比较多,细心的网友在查看Browser时会发现,从左到右依次为网站图标(favicon)、标题、最右边的动画进度条(圆圈)、背景进度条(和前面的不在一层),今天我们就一起来看看Android标题栏高级实现方法。   在Android Browser程序中标题栏是自绘的,TitleBar类继承于线性布局LinearLayout类,通过LayoutInflater调用layout中的xml布局文件实现相关方法 public class TitleBar extends LinearLayout {    private TextView        mTitle; //标题文字    private Drawable        mCloseDrawable;    private ImageView       mRtButton;    private Drawable        mCircularProgress; //圆圈进度指示    private ProgressBar     mHorizontalProgress; //水平进度条    private ImageView       mFavicon; //网站图标    private ImageView       mLockIcon;     private Drawable        mStopDrawable; //停止状态的图标    private Drawable        mBookmarkDrawable; //是一个书签的图标    private boolean         mInLoad;    private BrowserActivity mBrowserActivity;    private Drawable        mGenericFavicon; //如果站点没有favicon.ico时显示的默认图标    private […]

Android控件开发之ToggleButton原理 Android开发技术

  在Android平台上比较有特色的就是ToggleButton控件,虽然它的功能和CheckBox有些类似,但是他们的用处还是有一定的区别比如ToggleButton原本有图片装饰,通过ToggleButton可以很清楚的显示某些状态。它们均从Button为基类的CompoundButton中实现,其真假事件从Checkable来实现。   public abstract class CompoundButton extends Button implements Checkable {    private boolean mChecked; //状态是否选中    private int mButtonResource;    private boolean mBroadcasting;    private Drawable mButtonDrawable; //按钮的图标    private OnCheckedChangeListener mOnCheckedChangeListener; //选中状态改变监听    private OnCheckedChangeListener mOnCheckedChangeWidgetListener;     private static final int[] CHECKED_STATE_SET = {        R.attr.state_checked    };     public CompoundButton(Context context) {        this(context, null);    }     public CompoundButton(Context context, […]

重绘TextView类演示Android的Handler Android开发技术

  今天Android123通过DigitalClock类讲解下Android平台下自绘TextView类,演示下相关的Handler、Runnable线程和Observer观察者类。首先我们回忆下上次 Android自定义View实例AnalogClock源码 一文中的自绘控件,上次主要是重写View类onDraw方法实现自己绘制,本次我们直接从TextView控件来实现自己的数字时钟控件。   1. 将涉及Android平台UI线程的更新原理 Handler、Runnable   2. 对于Content数据存储对象可以使用Observer观察者类来获取SQLite数据库的变化   3. 由于本次没有改变控件的外观显示特性,所以没有重写TextView的onDraw方法,当然TextView也是从View中继承的所以可以直接调用基类的onDraw方法。Android开发网提示目前所有Android控件包android.widget.XXX都是从android.view.View类继承的。 public class DigitalClock extends TextView {     Calendar mCalendar;    private final static String m12 = "h:mm:ss aa";    private final static String m24 = "k:mm:ss";    private FormatChangeObserver mFormatChangeObserver;     private Runnable mTicker;    private Handler mHandler;     private boolean mTickerStopped = false;     String […]

AsyncTask实例代码演示Android异步任务 Android开发技术

  上次我们讲到了Android提供了一个较线程更简单的处理多任务的方法AsyncTask异步任务类,相对于线程来说AsyncTask对于简单的任务处理更安全,其内部的实现方法使用了Android的Handler机制,对于常见的文件下载可以使用AsyncTask类来处理,在Browser浏览器中就是用了该类下载Web服务器URL的Favicon图标。   首先Android123以简单的下载例子演示该类的大致结构,如下  private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {    protected Long doInBackground(URL… urls) {        int count = urls.length;        long totalSize = 0;        for (int i = 0; i < count; i++) {            totalSize += Downloader.downloadFile(urls[i]);            publishProgress((int) ((i / (float) count)100));        }        return totalSize;    }      protected void onProgressUpdate(Integer… progress) {        setProgressPercent(progress[0]);    }  […]

GraphableButton类实现Android UI开发 Android开发技术

  从Android 1.6开始,系统设置中的电池使用记录提供了一种简单的自绘Button按钮演示-GraphableButton类,通过GraphableButton我们可以很清晰的了解到前几次Android123讲到的UI开发要点。 public class GraphableButton extends Button {  //从Button类继承    private static final String TAG = "GraphableButton";     static Paint[] sPaint = new Paint[2];  //定义两种颜色     static {        sPaint[0] = new Paint();        sPaint[0].setStyle(Paint.Style.FILL);        sPaint[0].setColor(0xFF0080FF);                sPaint[1] = new Paint();        sPaint[1].setStyle(Paint.Style.FILL);        sPaint[1].setColor(0xFFFF6060);    }        double[] mValues;        public GraphableButton(Context context, AttributeSet attrs) {         super(context, attrs);    […]

ExifInterface使用,Android 2.0新增类 Android开发技术

  从Android 2.0开始新增了ExifInterface类,ExifInterface类主要描述多媒体文件比如JPG格式图片的一些附加信息,比如拍照的设备厂商,当时的日期时间,曝光时间,快门速度等。该类位于android.media.ExifInterface的位置,需要调用API Level至少为5即2.0 SDK。   一、ExifInterface类给我们了一个实用的方法public byte[] getThumbnail () 这个方法可以生成一个缩略图,返回一个字节数组,我们通过以前讲到的通过OutputStream将其保存成一个JPG文件。当然如果要是显示到一个Drawable对象,可以通过decodeByteArray(byte[], int, int) 类来解析这个字节数组,不过具体生成的分辨率还不清楚。   二、图片的MIME Exif信息   图片的的Exif信息和MP3的ID3标签类似,使用了属性和值的存储方式。通过public void setAttribute (String tag, String value) 来设置,而获取可以通过 public int getAttributeInt (String tag, int defaultValue) 和 public String getAttribute (String tag) 两种方法都可以,getAttributeInt 重载方法一第二个参数为我们设置的默认值,如果成功则返回相应Tag的值;特定的整数内容为该方法直接返回值。而重载方法二该方法直接返回结果,如果失败则为null。   目前Android SDK定义的Tag有: TAG_DATETIME    时间日期TAG_FLASH   闪光灯TAG_GPS_LATITUDE   纬度TAG_GPS_LATITUDE_REF  纬度参考 TAG_GPS_LONGITUDE   经度TAG_GPS_LONGITUDE_REF  经度参考 TAG_IMAGE_LENGTH   图片长TAG_IMAGE_WIDTH   图片宽TAG_MAKE   设备制造商TAG_MODEL   设备型号TAG_ORIENTATION   […]

Android开发网将推出每天一类专题 Android开发技术

  Android开发网将推出每天一类专题,我们将详细讲解并包含测试工程文件,讲解Android SDK以及NDK能带给我们什么样的产品,Android123作为国内外领先的手机软件开发商,致力于Symbian 、Windows Mobile、Android、OMS、Bada、Meego、PC以及iPhone等平台的产品研发。将给国内厂商和个人最好的开发体验辅导,我们承诺版权由CWJ独有,请各出版社不要询问各种出版问题,我们提供完全免费的技术资料,相关建议可以来函至allinsmart@163.com 会一一作答。

Android本地化开发技巧 Android开发技术

   很多开发者考虑使自己的Android程序兼容多国语言,其实Google在设计Android时已经考虑了本地化问题,通过定义相关的资源可以自适应当前手机的语言来加载响应的资源文件。Android开发网列出主流的本地化:   语言自适应    在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现,比如我们的程序兼容 简体中文、日文、英文、法文和德文,常规的字符strings.xml保存的目录在values文件夹中,这里我们就需要定义 values-zh-rCN、values-ja、values、values-fr和values-de。当然如果涉及到参数配置类xml文件夹也要改成xml-zh、xml-ja、xml、xml-fr和xml-de。    当然我们用代码如何获取本机的语言类型呢? 通过代码 :    String cwjLocale = getResources().getConfiguration().locale.getCountry();  即可获取,其中cwjLocale保存了国家代码,这些定义在java.util.Locale的字段中,直接对比即可,比如我们英文版固件设备为US。   当然我们需要测试,可能会强制加载某国语言,可以使用在Activity的SetContentView之前调用,比如强制简体中文,代码如下:          Resources resources = getResources();         Configuration config = resources.getConfiguration();         config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文         DisplayMetrics dm = res.getDisplayMetrics();         resources.updateConfiguration(config, dm);   屏幕分辨率自适应      这里我们需要判断两种大体情况,屏幕的方向,比如常规的纵向port和横屏land,我们定义的图片资源为     layout或drawable,而横屏情况下位layout-land和drawable-land,当然还有一种情况就是分辨率。   目前Android手机分辨率有    HVGA (320×480) 的G1、G2、G3 对应标准的 drawable-mdpi   QVGA (240×320) […]

面向企业应用Android集成SQLite和GG Apps Android开发技术

很多人看到了Android平台作为一个MID终端主要面向个人,但是MID可以很好作为一个企业应用终端,通过Google最新的“云计算”我们已经看到了些眉目,Android手机上包含了SQLite端,同时通过无线3G网络可以轻松的访问Google Apps组件,针对企业办公也是一种新的方向,在这一点微软Windows CE平台已经加入了SQL Mobile的支持。未来的Cloud计算中谁更有优势呢? 看来Windows Live发展不是很顺利,但是现在GG Apps的用户也很少。

Android SDK中bug漏洞报告 Android开发技术

Android平台目前SDK已经4个月没有更新,公开版最新开发包m5-rc15存在很多问题,下面是Google官方的Android SDK中bug漏洞报告页面,同时我们也可以上报bug。   13 Defect —- —- Reviewed —-    FileLock.release throws IOException      15 Defect —- —- Reviewed —-    no proper multicast support in system      16 Defect —- —- Reviewed —-    There’s no SDK for Mac PPC      24 Defect —- —- Reviewed —-    Stepping over "Object o = null" causes Eclipse "Internal Error"    […]

layout资源包含,android开发必读 Android开发技术

  有时候我们在一个Android程序中可能会复用布局文件,这时可以在一个xml文件中复用过去的布局文件,但是和常规的使用不同的是,需要加上类似包含头文件一样的include关键字,比如下面我们需要包含layout文件夹下的view.xml布局文件,需要<include layout="@layout/view" />  这样下,完整的如下,大家可以试一试。 <?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      >   <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/cwj"      />   <include layout="@layout/view" />  <include android:id="@+id/block" layout="@layout/item" />   <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/android123"      />   </LinearLayout> 

反编译Android程序的利器Dexdump Android开发技术

反编译Android程序目前没有什么好的方法,但是在Android Emulator中可以找到一个名为dexdump的程序,通过dexdump可以查看出apk文件中的dex执行情况,粗略分析出原始java代码是什么样的和Dot Net中的Reflector很像。   android编译器生成的java class相关内容都放到了dex文件中,为什么要反编译apk文件呢? 就目前来看Android开放度还很低,很多东西只有反编译官方的app才可以了解一些底层的东西,就目前而言开放度还不如Symbian,相比Windows CE就更不用提了。每天提到的开源是怎么开的,把Dalvik开了可能会好些,用java总感觉效率问题。

Android AIDL接口定义语言你知道吗? Android开发技术

Android进程之间如何通讯呢? 在Windows系统中存在IPC管道服务、MailSolt邮槽、消息等方法,在Android平台上提供了一种中间层语言AIDL Android接口定义语言(Android Interface Definition Language)。   实现IPC服务通过使用AIDL步骤主要有:   1.创建aidl文件,这个文件定义了一个接口(XXX.aidl),定义一些方法和字段引用对客户端。   2.添加xxx.aidl问见到你的makefile工程文件中(通过Eclipse插件管理)   3.实现你的接口方法,AIDL编译器会创建一个接口使用Java语言,这个接口封装了一些结构化的类名如Stub,通过集成这个接口实现一些必要的附加方法通过IPC服务调用,你必须创建一个扩展类接口,在你的aidl文件中,我们看到很像Windows Mobile中的ActiveX COM组件或者Symbian的 ECOM接口。   4.暴露你的接口给客户端,如果你写成一种服务形式,你必须扩展服务重载Service.onBind(Intent)来返回一个类实例来实现你的接口。

Android m5到0.9版之间API改变分析 Android开发技术

在最新的Android SDK 0.9版中很多地方都有了改变,涉及改变的API我们已经在Android移植栏目中介绍到,下面以更详细的代码实例形式介绍,不断更新增加: (比如IntentReceiver改名为BroadcastReceiver这种更合适的名称),我们看到Android 0.9 SDK中API的变化在改变上主要是命名方式更准确,实现过程改变不是很多。 IntentReceiver renamed to BroadcastReceiver Detailed Problem Description: For example, if you have a IntentReceiver class name MyReceiver.. In AndroidManifest.xml Error: MyReceiver does not extend android.context.BroadcastReceiver In MyReceiver class defination Error: Cannot resolve type IntentReceiver Solution: replace import android.content.IntentReceiver; public class MyReceiver extends IntentReceiver{    @Override    public void onReceiveIntent(Context context, Intent intent)    […]

Android手机浏览器Webkit介绍 Android开发技术

随着3G网络的普及,手机网站逐渐从Wap回归到Web时代,Android手机中内置了一款高性能webkit内核浏览器,这款浏览器在Android平台构架中采用C++开发运行效率高,Webkit浏览器被广泛应用在移动设备上如塞班S60第三版或苹果iPhone Safari上,webkit最大的特点是速度快、JS脚本处理速度是IE的6倍,同时在安全性稳定性都很出色,对web标准兼容好等特点,webkit是一项开源工程,以每夜构建方式更新。在Android平台上通过浏览器可以访问Gmail、Maps等网页,支持页面大小缩放,和水平滚动,下面浏览Engadget截图:

Android蓝牙栈bluez使用方法 Android开发技术

很多开发人员在最新的Android 0.9 SDK中没有找到蓝牙栈相关的参考,不过在官方消息中我们已经看到了是采用的是org.bluez相关的Package。这里主要介绍下Android蓝牙SDP相关的例程,我们看到是.intent.action,分为4个阶段:  org.bluez.intent.action.DISCOVERY_STARTED 开始探测 org.bluez.intent.action.REMOTE_DEVICE_FOUND   远程设备找到 org.bluez.intent.action.REMOTE_NAME_UPDATED  获取远程设备名称 org.bluez.intent.action.DISCOVERY_COMPLETED  完成SDP   大概的使用方法如下,在开发板上可以测试下,首先移植下org.bluez库 public void onStart(int startId, Bundle args){           super.onStart( startId, args );           try{           IBluetoothService ibtservice = BluetoothServiceNative.getBluetoothService();  //获取一个实例,其实在Android中已经准备好了系统服务          if( ibtservice == null ) {                                  stopSelf();  //失败了就Exit                 return;                }                      manager=ibtservice.getManager();                if( manager == null ) {                                 stopSelf();                } […]

学习使用Android提供的org.apache.http类 Android开发技术

要说Android网络通讯平台支持还是比较丰富的,除了兼容J2ME中的java.net api外还提供了一些Android平台独有的类android.net这个Package,似乎更强大的是org.apache.http类,这个是阿帕奇实验室开源的包,对于Http请求处理很方便,常见的有很多方法,同时在android m5-0.9r1中改变的也很多,来一起看看吧: import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpVersion; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.params.HttpParams; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpProtocolParams;   有关详细的例子还可以参考apache web server官方文档 http://hc.apache.org/httpcomponents-client/examples.html

新版ADT插件让Android开发更人性化 Android开发技术

就在最新的公开版SDK 0.9r1公开时,使用Eclipse环境开发的网友需要升级下ADT插件,方法参考 Android SDK 0.9版升级注意点 一文,可以看到全新ADT 0.7.1比上一版本0.4增加了不少功能,比如说在Emulator Control中加入了Location Controls,为了让Android模拟器支持GPS调试,我们可以看到三个标签,第一个为Manual手动设置,里面有经度Longitude和维度Latitude,第二个是GPX文件,通过加载GPX文件,Android的DDMS可以自动读取GPX预先的坐标,而最后一个KML和GPX差不多,仅仅是协议不同,后面两种方法为变动数据GPS数据模拟提供了支持,要知道目前都是NMEA-0183,我们直接解析就可以了。

Android模拟GPS数据生成kml和nmea文件 Android开发技术

在Android平台上开发可能没有真机的时候,我们通过DDMS中载入KML或NMEA文件来模拟生产数据,使用方法参考 新版ADT插件让Android开发更人性化 一文,最终这两个文件加载到/data/misc/location/gps/nmea或/data/misc/location/gps/kml/ 一、KML文件其实是一个XML文件,我们看下KML文件结构 <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.2"> <Document> <name>1065 Brea Mall, Brea, CA 92821.kml</name> <StyleMap id="default_copy0+nicon=http://maps.google.com/mapfiles/kml/pal3/icon60.png+hicon=http://maps.google.com/mapfiles/kml/pal3/icon52.png"> <Pair> <key>normal</key> <styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon60.png</styleUrl> </Pair> <Pair> <key>highlight</key> <styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon52.png</styleUrl> </Pair> </StyleMap> <Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon52.png"> <IconStyle> <scale>1.1</scale> <Icon> <href>http://maps.google.com/mapfiles/kml/pal3/icon52.png</href> </Icon> </IconStyle> <LabelStyle> <scale>1.1</scale> </LabelStyle> </Style> <Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon60.png"> <IconStyle> <Icon> <href>http://maps.google.com/mapfiles/kml/pal3/icon60.png</href> </Icon> </IconStyle> </Style> <Placemark> <name>1065 Brea Mall, Brea, CA 92821</name> <address>1065 Brea […]

使用Eclipse的Ctrl+Shift+o自动补全引用类 Android开发技术

很多初次接触Android的开发人员会感到Eclipse开放环境不如Visual Studio好用,基于JRE开发的开源IDE – Eclipse运行效率和稳定性不是很好,但很多地方设计比较人性化,初次接触Java开发的网友可能一次记不住很多类的引用或输入很繁琐,我们只要在IDE中照常写好类名,按下Ctrl+Shift+o,IDE就会自动补全,当遇到有异议的类时会使用$符号,这里我们需要修改下import的类就好了,希望对Android开发初学人员有帮助。

Android开发工具Dev Tools介绍 Android开发技术

Android提供了很多开发调试工具除了ADB、TraceView、Logcat外,今天这个名为Dev Tools的Android开发调试工具隐藏在Android模拟器中,为我们提供了强大的调试支持。我们在功能表中找到Dev Tools,运行后可以看到有很多条目,比如Development Settings,用来开发设置,进入后我们看到了比如Show CPU Usage这样的实用功能显示CPU占用率,帮助Android开发人员分析当前软件性能情况,今天就分析下Development Settings中的选项: Wait for debugger 等待调试器Enable ADB 启用ADB(android调试桥)Show running processs (显示运行中的进程)Show screen updates (显示屏幕更新)   下面是一些常规的调试选项,Android开发网友情提示开启这些选项后可能会影响运行效率,这些探测选项也是CPU敏感的。 Immediately destroy activites (立即销毁activities)Show CPU usage (显示CPU占用率)Show background (显示北京)Show Sleep state on LED (在休眠状态下LED开启)Keep screen on while plugged in (保持屏幕开启当插入后)Show GTalk service connection status (显示GTalk服务连接状态)

Android Permission大全1.0最终版本 Android开发技术

Android Permission大全出自1.0 SDK中记录着新改变的访问权限许可。程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求,Android开发网已经翻译并使用中英文对照,完整列表如下:android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location) android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location) android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands) android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock […]

Android使用第三方外部JAR库文件 Android开发技术

在Android平台中可以使用第三方外部JAR库文件,在Eclipse开发环境中,仅仅3步就可以使用第三方.jar文件。   1.在Package Explorer(包浏览器)面板中,右键单击鼠标在弹出的菜单中选择Properties(属性)  2.选择Java Build Path(Java构建路径),然后选择Libraries标签页.  3.按下Add External JARs 这个按钮,选择Jar文件即可。   如果你想包含第三方JARs到你的package包中,创建一个新的目录在你的工程中,选择Add Library… 代替即可,Android开发网提示不用将外部JARs文件放到工程文件夹中就可以正常使用。

Android 1.0不会支持JNI,无缘C++ Android开发技术

Android 1.0最终的版本无法执行本地JNI调用,基本上C++无缘Android开发,这也符合Google给我提供一个Dalvik版的Java原因,虽然最终Android源代码会全部开源,但是整个系统平台会保证安全,从上一版本的SDK已经看到很多bin程序都移除了SQLite3的移除就是一个暗示,提供足够多的Dalvik API可以让我们了解到这些都是为平台安全准备,还有很多android permission和android签名保护机制就是一种间接的ACL保护,不用把时间耽误到这些方面,如果不开发一个类似Android的Linux操作系统,这些似乎不是我们关心的话题。

Android中的R.java文件你知多少 Android开发技术

很多网友发现在Eclipse中创建的Android工程中包含这个一个R.java文件,这个文件到底是干什么用的呢? 其实Android自己维护这一个public final class R类主要是跟新资源文件,这个R.java无需我们自己去修改,如果你不了解千万不要去修改它,它定义的每个资源值都是唯一的,不会和系统冲突。这个文件由ADT插件自动更新,当你编辑过Res文件后保存,这个类就会自动更新。   R.java里面一般有attr、drawable、id、raw、layout、string以及xml等,根据你工程使用的资源而定。无法当R.java文件丢失时,就需要重建这个,但是可能会存在一些问题,比如资源无法自动更新。

MySQL-embedded运行在Android上 Android开发技术

MySQL-embedded for Java Library可以运行在Android平台上吗? 由于mySQL已经被Sun收购了,Google在Android上使用SQLite可能就像Dalvik代替JavaME一样。总的来说习惯了mySQL+Php+Apache+Linux的组合,使用db4o或sqlite总感觉自定义的太多,把raw这些原始的执行方式去除了,这样子看起来更像他们自己开发的,但从调试出来的运行效率来看,原生的SQL的查询语句效率高很多。不过怎么说都比J2ME中的RMS快和强大不是吗?数据库的最大优点就是方便查询,容量不大的话使用xml储存是不错的方法。

Android开发网版权声明 Android开发技术

近来很多网站转载了 Android开发网内文章,本站所有内容均为原创,转载时请注明来自所有内容服务于中国本土Google Android Developer。如果您需要长期转载请联系 android123@163.com ,感谢对我们的支持,帮助我们更好的分享开发经验和技巧。

android.webkit包还是很不开放的 Android开发技术

android.webkit是一个浏览器的Package,在整个平台上使用的是基于webkit内核的Chrome Lite浏览器,早期Opera试图在android平台上开发一个浏览器,但是自己处理代码、js脚本再到最后渲染java效率是远远无法和webkit底层C++相比的,看来Opera已经放弃了这一开发进程,然后当我们使用android.webkit包时发现了大的问题,不够开放。无法控制系统层面,只有自己定制自己的webview对象。

AIDL语言提供Android浏览器C++编写插件 Android开发技术

相信Android平台支持Sliverlight和Flash的报道大家都已经看到了,这些组件本身层面很高使用Java语言编写不太现实,至少和Java VM一个层次,需要C/C++这类的本地语言支持,同样Google提供了AIDL语言可以让Android使用本地语言开发,这样Flash和银光的运行库就可以在Chrome lite浏览器上以插件形式正常使用。   同时这将会导致Android平台异常古怪,兼容微软的.Net Framework中的部分特性,参考WPF/E相关资料,同时通过Flash Action Script编写基于Flash的游戏,在显示层也会有所提高。

Java基础知识getBytes搞定Android编码问题 Android开发技术

有关C/S通讯、I/O读写可能都会遇到编码问题,既然Android使用了Java语言,自然会遇到些编码问题,文件读取就是个问题。通过getBytes可以轻松设置编码,比如Unicode、Utf-8以及三种ANSI的转换,默认情况下可以获取模拟器的编码方式,ANSI情况下使用的是GBK/GB2312,里Android开发网提示而使用getBytes的参数就可以对编码进行转换,比如getBytes("ISO-8859-1")、getBytes("GBK")返回的字节数组就是相应编码了。I/O相关的Android使用的都是Java标准API,都是基础知识,过去没有从事过Java开发的不妨看看这些内容。

Android浏览器插件Gears Android开发技术

在Eclipse中我们使用DDMS的File Explorer观察,/data/data/com.android.broweser/app_plugins/gears-0.4.13.1这里包含了Google的Gears插件,Gears是一个很强大的web库,下方可以看到gears.so文件,so是shared object的意思,我们可以理解为windows中的dll动态库。所以Android平台的Chrome Lite浏览器支持的插件可以使用Native C++来编写。    有关Android Gears可以查看 Android Webkit浏览器插件Gears介绍

Android性能与调试很重要 Android开发技术

  用于手持的移动设备,Android软件性能上需要多加考虑。首先Java VM在资源占用上开销是很大的,很多垃圾GC处理机制直接影响到内存释放和整个平台运行的流畅度。   1.节省电量   手机软件必须考虑的问题是省电,如果需要大型处理尽量由服务器处理,直接把结果返回到手持设备上。多线程也是一种奢侈的使用,但是I/O存储必需这样才能保证流畅度,线程的阻塞将会降低用户体验,但是线程间切换调度的开销一直是重点。Android在DDMS中加入了Thread查看。   2.内存占用   在Eclipse+ADT插件的开发方式中,我们在DDMS中可以看到Heap堆内存的显示,Android开发网提示的是Java内存分配方式的问题,尽量产生少的对象,比如字符串操作如果连加比较多,可以使用StringBuilder代替String类。在游戏开发中经常用到的图片可以通过切片的方式从一个大的png图片上截取,或者放在gif文件作为逐帧保存,这样可以共用文件头减小体积。   3.调试工具   Android调试工具主要是模拟器中的Dev Tools和DDMS中的Logcat查看。当然模拟器自带的Dev Tools在功能上还是很详细的,可以显示CPU占用率,内存使用量,在单元测试时需要多加分析。

100% Secure Checkout

PayPal / MasterCard / Visa