1. 程式人生 > >修改Android開機圖片、動畫、聲音

修改Android開機圖片、動畫、聲音

二、修改第二張圖片
 方法一:
 在window下的操作:
 1 在 Widows 環境中建立資料夾:bootanimation
 2 在bootanimation資料夾中建立子資料夾:
  part0
  part1
  然後將一批.png檔案拷貝到資料夾part0裡面,part1中暫時不放圖片檔案
 3 在 bootanimation 資料夾中建立文字檔案:
  desc.txt
  可能在desc.txt中寫如下資訊(注,該檔案是google定義的,可在網上搜索得到):
  1024 600 10
  p 1 0 part0
  p 0 0 part1
  檔案 desc.txt 的內容解釋:
  (1)解析度
   1024 600
   第一行”1024 600”:表示機器螢幕解析度width height
  (2)幀率
   第一行”10”:表示每秒中播放10張圖片(gong 10zhang )
  (3)p 1 0 part0
   p:表示play
   1:表示播放一遍,如果是0則表示迴圈播放
   0:表示延時時間
   part0:此資料夾下放置開機顯示的動畫圖片,圖片解析度要和機器解析度一樣,否則顯示會有問題
  (4)p 0 0 part1
   在part0的圖片都顯示完畢後,就顯示part1中的圖片
 4 在資料夾 bootanimation 內,同時選擇“part0, part1, desc.txt”,然後壓縮
  (在Linux下壓縮:zip -r -X -Zstore ../bootanimation.zip part*/*.png desc.txt)
  壓縮的設定如下:
  (a)壓縮檔名:bootanimation.zip
  (b)壓縮檔案格式:ZIP
  (c)壓縮方式:儲存
 5 將前面生成的bootanimation.zip拷貝到工程中
  $ cd  device/samsung/ut4412/apk
  $ mkdir  app_newpad
  注:將生成的bootanimation.zip檔案拷貝到資料夾app_newpad中
 6 編輯 device.mk
  $ vi  device/samsung/ut4412/device.mk
  ##################################
  #  copy proprietary apk
  ##################################
  COPY_APK_TARGET := $(call all-apk-files-under,apk)
  PRODUCT_COPY_FILES += $(foreach apkName, $(COPY_APK_TARGET), \
  $(addprefix $(LOCAL_PATH)/apk/, $(apkName)):$(addprefix system/app/, $(apkName)))
  PRODUCT_COPY_FILES += \
  $(LOCAL_PATH)/apk/flashplayer.nm:system/app/flashplayer.nm
  # 新增以下資訊
  # 注意路徑的一致性
  PRODUCT_COPY_FILES += \
  $(LOCAL_PATH)/apk/app_newpad/bootanimation.zip:system/media/bootanimation.zip
  
 方法二: 
  android開機動畫叫原始碼位於frameworks/base/cmds/bootanimation下,這個程式會將/data/local/bootanimation.zip
 或/system/media/bootanimation.zip裡面的png圖片以動畫的形式播放出來。
 首先,我們先來分析一下原始碼:frameworks/base/cmds/bootanimation/BootAnimation.cpp
 首先看一下定義的常量:
  #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
  #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
  #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
 BootAnimation::readyToRun()
  進入一個if判斷語句
  if ((encryptedAnimation &&
    (access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
    (mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||
    ((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
    (mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
    ((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
    (mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
   mAndroidAnimation = false;
  }
 BootAnimation::threadLoop()
  if (mAndroidAnimation) {
    r = Android(); // 執行android字型閃動的圖片
    } else {
    r = movie(); // 執行bootanimation.zip中提供的動畫圖片
   }
 ==> BootAnimation::Android()會載入"images/android-logo-mask.png"和"images/android-logo-shine.png"
 ==> BootAnimation::movie()會載入bootanimation.zip中的內容
 我們下載的原始碼裡預設是沒有那些個.zip動畫的,所以總會跳到android字型閃動的畫面
 所以如果你係那個用.zip的動畫那麼把你做好的動畫拷貝到編譯好對應的目錄下即可,然後執行make snod整合進img包就可以看到效果了
 如果你想修改android閃動的那兩張圖片的話,最簡單的方法是直接替換圖片,如果你懂openGL的話也可以自己做酷炫的動畫
 那兩張圖片放在./frameworks/base/core/res/assets/images  目錄下,一張鏤空的android圖,一張發光效果,動畫效果就是下面那張發光的效果圖不斷左右移動。
 我是用Photoshop直接修改的
 修改完後直接替換,然後再 mmm frameworks/base  , make snod 即可