WallpaperManager(벽지관리자)


이 섹션 소개:

이 섹션에서는 이름에서 알 수 있듯이 WallpaperManager(배경화면 관리자)가 제공되며 휴대폰 배경화면과 관련됩니다. API 이 섹션에서는 WallpaperManager의 기본 사용법을 설명하고 시스템 자체를 호출합니다. 배경화면 선택 기능, 액티비티 배경을 배경화면으로 설정하고 정기적으로 배경화면을 바꾸는 예시를 작성해보세요~ 좋아요, BB는 아니고 이 섹션을 시작하겠습니다~1.gif

공식 API 문서:WallpaperManager


1 WallpaperManager의 기본 사용법

관련 방법

배경화면 설정 관련 방법:

  • setBitmap ( Bitmap bitmap): 배경화면을 bitmap
  • setResource(int resid)로 표현되는 비트맵으로 설정: 배경화면을 resid 리소스
  • setStream(InputStream data)으로 표현되는 이미지로 설정: 배경화면을 데이터로 설정 데이터로 표현되는 그림

다른 방법:

  • clear(): 배경화면을 지우고 시스템 기본 배경화면으로 다시 설정
  • getDesiredMinimumHeight(): 최소 배경화면 높이
  • getDesiredMinimumWidth() : 최소 배경화면 Width
  • getDrawable(): 현재 시스템 배경화면을 가져옵니다. 배경화면이 설정되지 않은 경우 시스템 기본 배경화면으로 돌아갑니다
  • getWallpaperInfo(): 현재 배경화면이 동적 배경화면임을 추가하고 동적을 반환합니다. 배경화면 정보
  • peekDrawable() : 현재 시스템 배경화면을 가져오고, 배경화면이 설정되지 않은 경우 null을 반환합니다.

WallpaperManager 개체 가져오기

WallpaperManager wpManager =WallpaperManager.getInstance(this);

배경화면을 설정하는 데 필요한 권한



2. 선택 기능

Button btn_set = (Button) findViewById(R.id.btn_set);
    btn_set.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent chooseIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
            startActivity(Intent.createChooser(chooseIntent, "选择壁纸"));
        }
    });

렌더링 실행:

2.gif


3. 활동의 배경을 바탕화면 배경으로 설정합니다.

두 가지 방법이 있는데, 하나는 활동에 코드를 사용하여 설정하는 것이고, 다른 하나는 AndroidManifest.xml에서 수정하려면 활동테마~!

3.gif

방법 1: 활동에서 설정:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

방법 2: AndroidManifest.Service에서 테마 수정), 잘 모르겠으면 다음으로 이동하세요. 10.5 AlarmManager(알람 시계 서비스) )

배우러~ 데모를 작성해 봅시다~

렌더링 실행 중

:

코드 구현

:

먼저 배경 화면을 정기적으로 변경하는 서비스를 작성해 보겠습니다. WallPaperService.java

<activity android:name=".MainActivity"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>

그런 다음 간단한 레이아웃과 3개의 버튼을 만듭니다. activity_main.xml:

/**
 * Created by Jay on 2015/11/13 0013.
 */
public class WallPaperService extends Service {

    private int current = 0;  //当前壁纸下标
    private int[] papers = new int[]{R.mipmap.gui_1,R.mipmap.gui_2,R.mipmap.gui_3,R.mipmap.gui_4};
    private WallpaperManager wManager = null;   //定义WallpaperManager服务

    @Override
    public void onCreate() {
        super.onCreate();
        wManager = WallpaperManager.getInstance(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if(current >= 4)current = 0;
        try{
            wManager.setResource(papers[current++]);
        }catch(Exception e){e.printStackTrace();}
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

그런 다음 여기에서 인스턴스화된 활동을 관리자로 설정하고 일정을 설정합니다. event~: MainActivity.java:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <Button
        android:id="@+id/btn_on"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开启自动换壁纸" />

    <Button
        android:id="@+id/btn_off"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="关闭自动换壁纸" />

    <Button
        android:id="@+id/btn_clean"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="清除壁纸" /></LinearLayout>

마지막으로 배경화면을 설정하고 서비스에 등록할 수 있는 권한을 추가하는 것을 잊지 마세요: AndroidManifest.xml:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_on;
    private Button btn_off;
    private Button btn_clean;
    private AlarmManager aManager;
    private PendingIntent pi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //①获得AlarmManager对象:
        aManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        //②指定要启动的Service,并指明动作是Servce:
        Intent intent = new Intent(MainActivity.this, WallPaperService.class);
        pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
        bindViews();
    }

    private void bindViews() {
        btn_on = (Button) findViewById(R.id.btn_on);
        btn_off = (Button) findViewById(R.id.btn_off);
        btn_clean = (Button) findViewById(R.id.btn_clean);
        btn_on.setOnClickListener(this);
        btn_off.setOnClickListener(this);
        btn_clean.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_on:
                aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi);
                btn_on.setEnabled(false);
                btn_off.setEnabled(true);
                Toast.makeText(MainActivity.this, "自动更换壁纸设置成功", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_off:
                btn_on.setEnabled(true);
                btn_off.setEnabled(false);
                aManager.cancel(pi);
                break;
            case R.id.btn_clean:
                try {
                    WallpaperManager.getInstance(getApplicationContext()).clear();
                    Toast.makeText(MainActivity.this, "清除壁纸成功~", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
    }
}

좋아요, 매우 간단합니다~


5 . 이 섹션의 샘플 코드를 다운로드하세요

WallpaperManagerDemo.zip


이 섹션 요약:

자, 이 섹션에서는 WallpaperManager의 몇 가지 기본 사용법을 소개합니다. 자세한 내용은 직접 알아야 합니다. 탐색해 보세요~5.jpg감사합니다~!