Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android移植之SDK m3升級到m5篇

Android移植之SDK m3升級到m5篇

日期:2016/3/14 9:48:49      編輯:高級開發

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()中就包含了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved