Android移植之SDK m3升级到m5篇
2011-06-29 13:45
435 查看
Android移植之SDK m3升级到m5篇
2009年2月3日9:13来源:本站原创
我有话说
(0
)
Android移植中除了硬件、Java虚拟机的移植外,Android
SDK版本更新也成了新的问题,不知道Google没有有犯Symbian的向下兼容问题,有修改api的习惯,在这里微软Windows
CE一直都很稳定,如果需要新的功能采用的是添加替代方案,不会删除过去的API。Android
SDK中m3升级到m5后出现了很多变化,主要变化的在于UI表示层、xml的布局文件,androidmanifest.xml文件以及部分数据库、多
媒体类的改变。Android开发网提示最新的SDK名为Android开发网提示最新的SDK名为Bleeding Edge
SDK除了OHA成员和Google ADC前50名选手外其他用户还无法获取到,除了新增一些类库外用户界面再次有大的改变,在Google
I/O开发大会上有新的触摸屏演示。
1)在m5版SDK中MediaPlayer.prepare() 方法将去除,否则将会抛出IOException异常,因为MediaPlayer.create()方法已经包含了打开文件对象。
2)layout.xml文件中将在每一个元素id前加上android: (不要忘android后面那个半角的冒号)
3)AndroidManifest.xml文件中class=和android:value=已经去除,使用android:name=代替class=和android:value=
4)AndroidManifest.xml文件中的权限问题也有了改变,<uses-permission id="android.permission.READ_CONTACTS" />读取联系人权限已经去除了。
5)setShortcut()方法有了改变,使用方式为setShortcut('3','e');也可以使用setNumericShortcut()和setAlphabeticShortcut()代替
6)SQLite类中ContentProviderDatabaseHelper已经被移除,使用SQLiteOpenHelper类代替即可。
7)ContentURI类已经被移除,new
ContentURI和ContentURI.create(String)将使用Uri.parse方法代
替,ContentURI.countPathSegments()方法使用Uri.getPathSegments.size()方法代替,使用
Uri.Builder.appendPath()代替ContentURI.addPath()方法。ContentURI.addId(id)将采用
Uri uri = ContentUris.appendId(uri.buildUpon(), id).build(); 方式构建。
8)SQLite类中ContentProvider.query()方法已经有了改变,原始SQL语句可以通过ContentProvider.rawQuery()方法代替,同时Android开发网认为原始方式处理SQL语句更快。
9)QueryBuilder类已经被移除,使用SQLiteQueryBuilder类代替。
10)ContentURIParser类被移除,使用UriMatcher类代替。
11)View.setKeyListener类已经被移除,使用View.setOnKeyListener()方法代替。
12)NotificationManager.notifyWithText方法已经被移除,使用android.widget.Toast.makeText.show()方法代替。
13)Intent.getExtra存在安全问题,被忽视,请使用类似 getIntExtra()、getStringExtra()这样的包含类型getXXXExtra方法代替。
14)android.webkit.BrowserCallbackAdapter已经被去除,BrowserCallback类将使用WebViewClient和WebChromeClient 两个类代替。
15)KeyEvent.isDown()已经被移除,使用KeyEvent.getAction()方法替代。
16)getPathSegment(int)需要强制的硬编码,使用Uri.getLastPathSegment() 即可。
17)ContentURI.addPath()方法不能正常工作,uri =
WikiNote.Notes.SEARCH_URI.addPath(searchCriteria);使用下面的uri =
WikiNote.Notes.SEARCH_URI.buildUpon().appendPath(searchCriteria).build();
和uri = Uri.withAppendedPath(WikiNote.Notes.SEARCH_URI, searchCriteria);
18)ListActivity.getSelectionRowId() 已经移除了,使用ListActivity.getSelectedItemId()方法代替。
19)Menu.addSeparator()方法已经移除,新的用户界面不再支持菜单的分割线。
20)Spinner.getSelectedItemIndex()已经移除了,使用新的Spinner.getSelectedItemPosition()方法代替。
21)android.database.ArrayCursor游标类删除,使用android.database.ArrayListCursor替代。
22)android.view.WindowPolicy已经去除了,使用android.view.Window即可。
23)View.draw()类型名改变,新的为View.onDraw()方法。
24)View的getDrawingWidth和getDrawingHeight名称改为了getWidth()和getHeight()
25)Androidmanifest.xml文件中type标签已经改为data,比如原来
<intent-filter>
<type android:value="gphone.type/999"/>
</intent-filter>
现在改为
<intent-filter>
<data android:mimeType="gphone.type/999"/>
<intent-filter>
26)使用SurfaceView 渲染GL渐变,原来的GLContext.makeCurrent(View)失败可能导致异常
27)GL渐变类从m3版的SDK中就不在了,使用确信利用GLContext.post(),不再需要
GLContext.waitGL(),同时不需要在锁定或解锁Canvas,直接传递SurfaceView到当前
GLContext.makeCurrent()即可。
28)GL显示EGL BAD ALLOC异常,确定在执行GlContext.destroy()前,你的Activity已经挂起或退出,典型的调用是在结束时现成循环中使用try..catch..finally捕获异常。
29)原始的J2ME中Bitmap的Bitmap.createBitmap(int[] colors, int width, int
height, boolean hasAlpha) 方法已经移除,在Android中新的new createBitmap(int[]
colors, int width, int height, Config
config)将替代,最后的Config参数是枚举颜色类型,如ARGB_8888, ARGB_4444或RGB_565
30)MidiFile类已经在m5
SDK中移除,播放midi方法已经合并在MediaPlayer类中,但扩展名不正确仍然无法播放,由于在Android
R类中不需要扩展名,如果写错后ADT无法识别,Android开发网友情提示正确的扩展名为mid而不是midi。
31)在layout.xml文件中/LinearLayout添加ScrollView滚动视图,类似 <ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">
32)影片回放在m5 SDK中变的更简单,通过新的VideoView类可以播放mp4视频,但需要注意的是不需要显式的执行start()方法,在setVideoPath()和setVideoURI()中就包含了。
相关文章推荐
- cocos2d-x 笔记(一) win32环境配置以及eclipse+ndk+sdk+cygwin的android移植
- 如何升级android的sdk
- Bugly Android 应用升级 SDK 使用指南
- android studio使用代理(腾讯镜像)来更新tools、sdk、extras和升级
- 解决SDK 升级 遇到的 Failed to fetch URL http://dl-ssl.google.com/android/repository/repository.xml
- Android SDK Tools 升级到revision 17+后创建FragmentActivity失败问题的解决方法
- 如何升级android的sdk
- android升级sdk后,原来正常的工程,运行时提示classnotfound
- 搭建Android开发环境之——Android4.0.3, 4.1, 4.2, 4.3, 4.x,及升级 ADT(22.0.5)和SDK(22.x)
- 升级Android ADT 和SDK
- 移植DynamixelSDK到Android平台
- windows 下android sdk tools升级不了问题解决
- 搭建Android开发环境之——Android4.0.3, 4.1, 4.2, 4.3, 4.x,及升级 ADT(22.0.5)和SDK(22.x)
- Android, 升级SDK后ADT版本不匹配的问题
- Android 解决升级到SDK4.4.2后Eclipse不自动生成Activity和xml布局的问题
- Android, 升级SDK后ADT版本不匹配的问题
- SAP SMP SDK升级到SP13 PL5,Android设备的支持情况
- 关于eclipse的sdk manager 升级android support library的bug