Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 深度剖析谷歌Android架構問題

深度剖析谷歌Android架構問題

編輯:高級開發

想要充分的掌握android架構的相關問題,那麼就要對android架構的性質、語句、變量、函數、預處理指令、輸入和輸出等內容進行了解掌握,這樣就會使開發人員的工作效率提高。

對於android架構這樣一個完整又相對復雜的系統,一個MediaPlayer功能實現不在其具體的功能,而是具體功能如何適應android系統android MediaPlayer的主要具體實現在OpenCore的Player中。

這部分不是本文的關注點,本文關注的是MediaPlayer系統的架構,其他的一些android應用程序使用類似的架構對於開源事業在中國的發展,hanchao3c認為應該共享的不僅僅是代碼,文檔、設計思想、理念甚至對於技術的理解都應該得到充分的共享。

android架構為中國人進入大規模的開源項目提供了很好的機遇,對於走在技術前沿的人們,不應將技術視為私有財產。而應該將自己理解更好地奉獻給大眾,提高大眾的學習速度,從中也可以得到反饋,從而促進自己的進步。僅以此文奉獻給所有關系技術的朋友,希望可以拋磚引玉,促進我們共同的技術進步!

在各個庫中,libmedia.so位於核心的位置,它對上層的提供的接口主要是MediaPlayer類,類libmedia_jni.so通過調用MediaPlayer類提供對Java的接口,並且實現了android.media.MediaPlayer類。

libmediaplayerservice.so是Media的服務器,它通過繼承libmedia.so的類實現服務器的功能,而libmedia.so中的另外一部分內容則通過進程間通訊和libmediaplayerservice.so進行通訊。libmediaplayerservice.so,

真正功能通過調用OpenCore Player來完成。MediaPlayer部分的頭文件在frameworks/base/include/media/目錄中,這個目錄是和libmedia.so庫源文件的目錄frameworks/base/media/libmedia/相對應的。主要的頭文件有以下幾個:

  1. notify_callback_f notifyFunc)
  2. {
  3. sp<MediaPlayerBase> p;
  4. switch (playerType) {
  5. case PV_PLAYER:
  6. LOGV(" create PVPlayer");
  7. p = new PVPlayer();
  8. break;
  9. case SONIVOX_PLAYER:
  10. LOGV(" create MidiFile");
  11. p = new MidiFile();
  12. break;
  13. case VORBIS_PLAYER:
  14. LOGV(" create VorbisPlayer");
  15. p = new VorbisPlayer();
  16. break;
  17. }
  18. //……
  19. return p;
  20. }

在這些頭文件mediaplayer.h提供了對上層的接口,而其他的幾個頭文件都是提供一些接口類(即包含了純虛函數的類),這些接口類必須被實現類繼承才能夠使用。由於具有純虛函數。

IMediaPlayerService 以及BnMediaPlayerService必須被繼承實現才能夠使用,在IMediaPlayerService定義的create和decode等接口。事實上是必須被繼承者實現的內容。注意,create的返回值的類型是sp<IMediaPlayer>,這個IMediaPlayer正是提供實現功能的接口。

(OGG Vobis是一種音頻壓縮格式,與MP3等的音樂格式類似,它具有完全免費、開放和沒有專利限制的特點。)值得注意的是PVPlayer、MidiFile和VorbisPlayer三個類都是繼承MediaPlayerInterface得到的。

android架構又是繼承MediaPlayerBase得到的,因此三者具有相同接口類型。只有建立的時候會調用各自的構造函數,在建立之後,將只通過MediaPlayerBase接口來MediaPlayerBase控制它們。在frameworks/base/media/libmediaplayerservice目錄中,MidiFile.h和MidiFile.cpp的實現MidiFile,VorbisPlayer.h和VorbisPlayer.cpp實現一個VorbisPlayer。

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