国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 12 內(nèi)置系統(tǒng)默認(rèn)動態(tài)壁紙(視頻資源)實現(xiàn)

這篇具有很好參考價值的文章主要介紹了Android 12 內(nèi)置系統(tǒng)默認(rèn)動態(tài)壁紙(視頻資源)實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、動態(tài)壁紙的實現(xiàn)


  • 新建APP 項目 實現(xiàn) WallpaperService
/**
 * 實現(xiàn)壁紙服務(wù)
*/
public class MagicWallpaper extends WallpaperService {

    public final String TAG = this.getClass().getSimpleName();

    @Override
    public Engine onCreateEngine() {
        Log.d(TAG, "->:onCreateEngine()");
        // 1: 這里返回實現(xiàn)的動畫引擎
        return new VideoEngine();
    }
}
  • 實現(xiàn)視頻播放的引擎
class VideoEngine extends Engine {

        private MediaPlayer mp;

        public VideoEngine() {
            super();
        }

        @Override
        public void onCreate(SurfaceHolder surfaceHolder) {
            super.onCreate(surfaceHolder);
            // Engine對象被創(chuàng)建時回調(diào),這里可以做一些初始化的工作(例如 注冊廣播)
            Log.d(TAG, "->:VideoEngine -- onCreate()");
            
            //  這里加載本地視頻資源,初始化播放器
            mp = MediaPlayer.create(getApplicationContext(), R.raw.magic);
            mp.setLooping(true); // 循環(huán)播放
            mp.setVolume(0.0f, 0.0f);// 靜音
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            //Engine對象被銷毀時回調(diào),這里可以做一些回收釋放的操作(例如 注銷廣播)
            Log.d(TAG, "->:VideoEngine -- onDestroy()");
        }

        @Override
        public void onVisibilityChanged(boolean visible) {
            super.onVisibilityChanged(visible);
            //顯示、隱藏時切換,在桌面時為顯示,跳轉(zhuǎn)到別的App頁面時為隱藏 :這里做視頻的暫停和恢復(fù)播放
            Log.d(TAG, "->:VideoEngine -- onVisibilityChanged() visible:" + visible);
            if (mp != null) {
                if (visible) {
                    mp.start();
                    Log.d(TAG, "->:VideoEngine -- onVisibilityChanged() mp->start");
                } else {
                    mp.pause();
                    Log.d(TAG, "->:VideoEngine -- onVisibilityChanged() mp->pause");
                }
            }
        }

        @Override
        public void onSurfaceCreated(SurfaceHolder holder) {
            super.onSurfaceCreated(holder);
            //SurfaceView創(chuàng)建時回調(diào),視頻MediaPlayer對象播放的視頻輸出在這個surface上
            Log.d(TAG, "->:VideoEngine -- onSurfaceCreated()");
            mp.setSurface(holder.getSurface());
            mp.start();
            Log.d(TAG, "->:VideoEngine -- onSurfaceCreated() start!");
        }

        @Override
        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            //Surface銷毀時回調(diào),這里銷毀MediaPlayer,回收MediaPlayer
            if (mp != null) {
                Log.d(TAG, "->:VideoEngine -- onSurfaceDestroyed()");
                mp.stop();
                mp.release();
                mp = null;
            }
        }
    }
  • AndroidManifest.xml 里注冊服務(wù)
<service android:name="com.hct.magicwallpaper.MagicWallpaper"
	android:label="@string/wallpaper_label"
	android:permission="android.permission.BIND_WALLPAPER"
	android:exported="true">
		<intent-filter>
        	<action android:name="android.service.wallpaper.WallpaperService" />
		</intent-filter>
		<meta-data android:name="android.service.wallpaper" android:resource="@xml/magic" />
</service>

其中的 <intent-filter> 、<action> 、<meta-data> 都是固定寫法,用于系統(tǒng)識別,我們需要配置的是 后面的 android:resource=“@xml/magic”

  • 資源配置

@xml/magic
res目錄下,新建xml文件夾 然后新建 xxxx.xml(如本例:magic.xml)

<?xml version ="1.0" encoding ="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
    android:thumbnail="@drawable/magic_thumbnail"
    android:author="@string/author"/>

VideoEngine 里 的視頻資源 R.raw.magic
res目錄下,新建raw文件夾 然后拷貝進(jìn)來視屏素材(如本例:magic.mp4)

ps: 視頻資源放在本地,放在 res/raw 目錄下,然后 R.raw.xxx.mp4 調(diào)用即可

@drawable/magic_thumbnail
在drawable目錄下放一張動態(tài)桌面的縮略圖,主要是用來,系統(tǒng)瀏覽動態(tài)桌面展示資源列表的一個縮略圖

以上步驟基本就是一個動態(tài)視屏桌面的核心功能了,即完成了一個視頻資源的動態(tài)壁紙,然后安裝app ,即可在系統(tǒng)動態(tài)壁紙里看到自己的項目。


2、系統(tǒng)內(nèi)置

  • 在主干目錄 **package/wallpapers/**下新建項目 MagicWallpaper

  • 拷貝前面做的app的 res 和 src 目錄到MagicWallpaper里

    注意:src 只包含包名部分的路徑,即src/com/xxx/xxx 這樣子,不要main/java 這兩層

  • 將AndroidManifest.xml 拷貝到文件根目錄,添加

    <uses-feature android:name=“android.software.live_wallpaper”/>

  • 編寫Android.mk腳本

LOCAL_PATH := $(call my-dir)

# Standalone Wallpaper picker app
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files) $(call all-renderscript-files-under, src)
LOCAL_CERTIFICATE := shared
LOCAL_PACKAGE_NAME := MagicWallpaper
LOCAL_SDK_VERSION := current 
# LOCAL_PRIVATE_PLATFORM_APIS與LOCAL_SDK_VERSION 二選一配置
#LOCAL_PRIVATE_PLATFORM_APIS := true   
include $(BUILD_PACKAGE)
  • 最后如果系統(tǒng)有配置這個路徑源碼的編譯,把這里新建的墻紙加入
    例如我這邊是

…/devices/mediatek/system/common/devices.mk 目錄下腳本控制項目是否參與編譯文章來源地址http://www.zghlxwxcb.cn/news/detail-426091.html

ifeq ($(strip $(MSSI_MTK_LIVEWALLPAPER_APP)), yes)
  PRODUCT_PACKAGES += LiveWallpapersPicker
 # 這里加上自己的項目,就可以參與編譯
  PRODUCT_PACKAGES += MagicWallpaper
endif

到了這里,關(guān)于Android 12 內(nèi)置系統(tǒng)默認(rèn)動態(tài)壁紙(視頻資源)實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android 12 修改系統(tǒng)音量默認(rèn)初始值

    1.需求:Android 系統(tǒng)出廠默認(rèn)的音量值過小,需要把音量默認(rèn)初始值改成音量的最大值. 2.涉及核心代碼: 3.系統(tǒng)音量默認(rèn)初始值在AudioSystem.java中定義,代碼如下: 3.系統(tǒng)音量最大值和最小值定義在AudioService.java 中,代碼如下: ------------------------------------------------------------修改方案一-

    2024年02月10日
    瀏覽(18)
  • Android 12.0系統(tǒng)默認(rèn)授予讀寫權(quán)限給第三方app

    ?在12.0的系統(tǒng)rom定制化開發(fā)中, 在6.0以前讀寫權(quán)限是默認(rèn)授予的,app不需要申請權(quán)限 在10.0之前需要android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE 權(quán)限就可以了而在安卓11的時候繼續(xù)強(qiáng)化對SD卡讀寫的管理,引入了MANAGE_EXTERNAL_STORAGE權(quán)限,而之前的WRITE_EXTER

    2024年02月12日
    瀏覽(200)
  • android 12.0 第三方輸入法app設(shè)置系統(tǒng)默認(rèn)輸入法

    在12.0的產(chǎn)品開發(fā)中,有功能需要要求設(shè)置默認(rèn)輸入法,替換掉系統(tǒng)的輸入法,所以這就需要了解設(shè)置輸入法的相關(guān)功能需求,然后根據(jù)輸入法包名來設(shè)置默認(rèn)輸入法 在設(shè)置系統(tǒng)默認(rèn)輸入法中 每個系統(tǒng)輸入法的id不同 根據(jù)id設(shè)置輸入法 需要先根據(jù)需要設(shè)置默認(rèn)輸入法的id,來

    2024年02月07日
    瀏覽(100)
  • 視頻動態(tài)壁紙 Dynamic Wallpaper for Mac中文

    視頻動態(tài)壁紙 Dynamic Wallpaper for Mac中文

    Dynamic Wallpaper是一款Mac平臺上的動態(tài)壁紙應(yīng)用程序,它可以根據(jù)時間等因素動態(tài)切換壁紙,提供更加生動和多樣化的桌面體驗。 Dynamic Wallpaper包含了多個動態(tài)壁紙,用戶可以根據(jù)自己的喜好選擇和切換。這些動態(tài)壁紙可以根據(jù)時間等因素進(jìn)行自動切換,也可以手動進(jìn)行切換。

    2024年02月10日
    瀏覽(23)
  • Android 12.0Launcher3 去掉workspace長按彈出壁紙彈窗

    在12.0的系統(tǒng)開發(fā)中,在Launcher3開發(fā)中,在長按屏幕的時候,會彈出窗口,修改主屏幕配置,壁紙,等信息,由于要默認(rèn)設(shè)置一些配置 不想讓用戶修改相關(guān)配置,這時候就需要去掉長按彈窗功能了,禁止修改相關(guān)配置 下面來分析下workspace相關(guān)長按事件的功能實現(xiàn) 先看workspac

    2024年02月07日
    瀏覽(45)
  • 桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

    桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

    前言 前段時間,用PyQt5寫了幾篇文章,關(guān)于Python自制一款炫酷音樂播放器、自定義桌面動畫掛件、車牌自動識別系統(tǒng)。今天就繼續(xù)給大家分享一個實戰(zhàn)案例,帶大家一起用Python的PyQt5開發(fā)一個自定義動態(tài)桌面壁紙,好玩又有趣! 首先一起來看看最終實現(xiàn)的自定義動態(tài)壁紙效果

    2023年04月25日
    瀏覽(29)
  • react&antd(12)動態(tài)表單的默認(rèn)值問題

    react&antd(12)動態(tài)表單的默認(rèn)值問題

    最近遇到一個需求是有一個表單可以輸入各種信息,然后還需要有一個編輯功能,點擊編輯的時候需要把當(dāng)前數(shù)據(jù)填入到表單里面。在網(wǎng)上查了很多種方法,然后我的思路是使用initialValues搭配setState()使用。默認(rèn)值都為空,然后點擊單條數(shù)據(jù)時把該條數(shù)據(jù)需要的字段setState()更

    2024年02月11日
    瀏覽(30)
  • Android12 授予APK默認(rèn)權(quán)限

    Android12 授予APK默認(rèn)權(quán)限

    不同于以往的Android版本 可以直接在此處設(shè)置: Android/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java ?授予權(quán)限類型參考下表: ?比如 為DemoAPK添加定位通話以及訪問內(nèi)存權(quán)限.

    2024年01月21日
    瀏覽(27)
  • PowerShell系列(八)PowerShell系統(tǒng)默認(rèn)內(nèi)置的Provider介紹

    PowerShell系列(八)PowerShell系統(tǒng)默認(rèn)內(nèi)置的Provider介紹

    往期回顧 PowerShell系列(一):PowerShell介紹和cmd命令行的區(qū)別 PowerShell系列(二):PowerShell和Python之間的差異介紹 PowerShell系列(三):PowerShell發(fā)展歷程梳理 PowerShell系列(四):PowerShell進(jìn)入交互環(huán)境的三種方式 PowerShell系列(五):PowerShell通過腳本方式運行筆記 PowerShell系

    2024年02月11日
    瀏覽(30)
  • 高通Android 12/13 默認(rèn)應(yīng)用程序授予權(quán)限

    1、一提到權(quán)限很多Android開發(fā)者都會想到 比如撥打電話 讀取手機(jī)通訊錄 定位 這些都是需要申請權(quán)限,Google Android 6.0之后(sdk 23) 需要app動態(tài)申請權(quán)限 或者權(quán)限組 2、我這里打個比方 比如需要在fm應(yīng)用 默認(rèn)打開mic權(quán)限? 3、我們需要知道這個默認(rèn)應(yīng)用程序的包名 (例如 xxx.

    2024年02月01日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包