国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

安卓實戰項目-動態桌面-簡單實現

Tonny / 713人閱讀

摘要:先上效果圖準備,桌面是一個小視頻,要求,符合手機尺寸,最好不要超過,我這個只有幾,開發環境,由于沒后更新。

先上效果圖

準備:1,桌面是一個小視頻,要求,符合手機尺寸,最好不要超過100M,我這個只有幾M

2,開發環境,由于沒后更新。使用的還是Android studio 2.3.3

前言:對于動態的壁紙大部分手機廠商還是保留的,不過發現oppo某一款就沒有這個功能了,不過絲毫不影響本應用的開發,它只是在沒做動態壁紙的界面而已,系統還是保留的

上代碼:
1,簡單的布局:




    

2,動態桌面一直在后臺跑,肯定就需要service了。繼承WallpaperService

public class MyWallpaper extends WallpaperService {

    public static  final String MYWALLPAPER_ACTION="com.zxyoyo.hosion.dynamicdesk";
    public static  final String KEY_ACTION="key_action";
    public static  final int SOUND_OPEN=1;
    public static  final int SOUND_CLOSE=0;

    @Override
    public Engine onCreateEngine() {
        return new MyEngine();
    }

    public static void openSound(Context context) {
        Intent intent = new Intent(MYWALLPAPER_ACTION);
        intent.putExtra(KEY_ACTION, SOUND_OPEN);
        context.sendBroadcast(intent);
    }
    public static void closeSound(Context context) {
        Intent intent = new Intent(MYWALLPAPER_ACTION);
        intent.putExtra(KEY_ACTION, SOUND_CLOSE);
        context.sendBroadcast(intent);
    }

    public static void setDynamicWallPaper(Context context){
        final Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
        intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
                new ComponentName(context,MyWallpaper.class));
        context.startActivity(intent);

    }
 }

其中的MyEngine是內部類,繼承wallpaper的engine

class MyEngine extends Engine {

        private MediaPlayer mediaPlayer;

        private BroadcastReceiver broadcastReceiver;

        @Override
        public void onCreate(SurfaceHolder surfaceHolder) {
            super.onCreate(surfaceHolder);

            IntentFilter intentFilter = new IntentFilter(MYWALLPAPER_ACTION);
            registerReceiver(broadcastReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    int action = intent.getIntExtra(KEY_ACTION, -1);
                    switch (action) {
                        case SOUND_OPEN:
                            mediaPlayer.setVolume(1.0f, 1.0f);
                            break;
                        case SOUND_CLOSE:
                            mediaPlayer.setVolume(0, 0);
                            break;

                    }
                }
            }, intentFilter);


        }

        @Override
        public void onDestroy() {
            unregisterReceiver(broadcastReceiver);
            super.onDestroy();

        }

        @Override
        public void onVisibilityChanged(boolean visible) {
            if (visible) {
                mediaPlayer.start();
            } else {
                mediaPlayer.pause();
            }
        }


        @Override
        public void onSurfaceCreated(SurfaceHolder holder) {
            super.onSurfaceCreated(holder);
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setSurface(holder.getSurface());
            try{
                AssetManager aManager = getApplicationContext().getAssets();
                AssetFileDescriptor fileDescriptor = aManager.openFd("3sheng3shi.mp4");
                mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength());
                //循環播放我們的視頻
                mediaPlayer.setLooping(true);
                //默認將音量設置成最小
                mediaPlayer.setVolume(0,0);
                mediaPlayer.prepare();
                mediaPlayer.start();
            }catch (IOException e){
                e.printStackTrace();
            }

        }

        @Override
        public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            super.onSurfaceChanged(holder, format, width, height);
        }

        @Override
        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            //釋放,置空
            mediaPlayer.release();
            mediaPlayer = null;

        }
    }

3,最后就是在MainActivity中調用了

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cbSound = (CheckBox) findViewById(R.id.cb_sound);
        //監聽是否開啟聲音
        cbSound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    //開啟聲音
                    MyWallpaper.openSound(MainActivity.this);
                }else {
                    //關閉聲音
                    MyWallpaper.closeSound(MainActivity.this);
                }
            }
        });
    }

    //按鈕的點擊事件
    public void setDynamicDesk(View view){
        MyWallpaper.setDynamicWallPaper(this);
    }

總結:兩個類就實現了動態桌面效果,很簡單吧,自己可以動手試試了,還是挺實用的;

本質其實就是系統的一個api,有關wallpaper的更多內容我就不詳細說明,下篇文章繼續寫這個項目的升級版!

[附上git源碼][2]

最后終極版本已提交企鵝寶求給五星好評點擊前往,以后的文章就是一步步拆分這個這應用,包括服務器的搭建,數據添加!謝謝支持!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67750.html

相關文章

  • 安卓實戰項目-動態桌面-rxjava實現搜索本地所有視頻

    摘要:前言上一篇文章已經實現了將文件中設置成動態壁紙安卓實戰項目動態桌面簡單實現需求既然文件能用于動態桌面,那么手機中的視頻也可以吧,有沒有大膽的想法上效果圖分析,類似于上面圖片的搜索效果,通過點擊,搜索出我們需要的文件圖片中用演示,此時用到 前言:上一篇文章已經實現了將assets文件中設置成動態壁紙:安卓實戰項目-動態桌面-簡單實現 需求:既然assets文件能用于動態桌面,那么手機中...

    james 評論0 收藏0
  • 信安 - 收藏集 - 掘金

    摘要:咱媽說別亂點鏈接之淺談攻擊閱讀掘金作者馬達編輯迷鹿馬達,精通開發開發,擅長接口設計以及平臺化建設,獨自主導過多個產品。一題目購物應用分環境要求安全學習資料匯總掘金安全學習資料匯總安全學習網站收集 咱媽說別亂點鏈接之淺談 CSRF 攻擊 - 閱讀 - 掘金作者 | 馬達編輯 | 迷鹿 馬達, 精通PHP開發、Web開發,擅長api接口設計以及平臺化建設,獨自主導過多個Web產品。目前就職...

    lushan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<