壁纸规则不符的设备屏幕屏幕、壁纸、规则、设备

由网友(草莓味百分百)分享简介:我有一组在一个文件夹中绘制的图像。我有一个按钮可以设置图片作为墙纸上的设备屏幕。但是,当我设置此图片作为壁纸它无论是缩放或裁剪。我想形象应该适合屏幕大小。我看到很多在SO联系,但没有联系是为我工作。这是code我想这么远。code - 位图bmap2 = BitmapFactory.de codeStream(ge...

我有一组在一个文件夹中绘制的图像。我有一个按钮可以设置图片作为墙纸上的设备屏幕。但是,当我设置此图片作为壁纸它无论是缩放或裁剪。我想形象应该适合屏幕大小。我看到很多在SO联系,但没有联系是为我工作。这是code我想这么远。

code -

 位图bmap2 = BitmapFactory.de codeStream(getResources()openRawResource(mThumb [位置]));
DisplayMetrics指标=新DisplayMetrics();
。getWindowManager()getDefaultDisplay()getMetrics(度量)。
INT高= metrics.heightPixels;
INT宽度= metrics.widthPixels;
点阵位图= Bitmap.createScaledBitmap(bmap2,宽度,高度,真正的);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(本);
尝试 {
  wallpaperManager.setBitmap(位);
  }赶上(IOException异常E){
  e.printStackTrace();
}
 

我还添加了以下清单中的行 -

 <使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER_HINTS/>
<使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER/>
 

解决方案 樊城监控设备 恒正永城智能系统 安装监控设备高清图片 高清大图

您好:这正与绘制的图像我已经检查了。

  DisplayMetrics指标=新DisplayMetrics();
                。getWindowManager()getDefaultDisplay()getMetrics(度量)。
                INT高= metrics.heightPixels;
                INT宽度= metrics.widthPixels;
                位图tempbitMap = BitmapFactory.de codeResource(getResources(),R.drawable.img);
                点阵位图= Bitmap.createScaledBitmap(tempbitMap,宽度,高度,真正的);
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this);
                wallpaperManager.setWallpaperOffsetSteps(1,1);
                wallpaperManager.suggestDesiredDimensions(宽度,高度);
                尝试 {
                  wallpaperManager.setBitmap(位);
                  }赶上(IOException异常E){
                  e.printStackTrace();
                }
 

另外提及的Manifest.xml ..

这些权限

 <使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER_HINTS/>
    <使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER/>
 

这是截图。

有关画面店复位适合壁纸的图片路径共享preferences和使用Boot完成接收器然后重新在屏幕上相同的壁纸......

广播接收器。

 进口java.io.IOException异常;

进口android.app.WallpaperManager;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.util.DisplayMetrics;
进口android.util.Log;
进口android.view.WindowManager;

公共类BootReceiver扩展的BroadcastReceiver {
私有静态最后字符串变量=BootReceiver;

@覆盖公共无效的onReceive(上下文的背景下,意图意图){
    尝试{
            DisplayMetrics指标=新DisplayMetrics();
            窗口管理器窗口管理=(窗口管理器)context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay()getMetrics(度量)。
            INT高= metrics.heightPixels;
            INT宽度= metrics.widthPixels;
            位图tempbitMap = BitmapFactory.de codeResource(context.getResources(),R.drawable.img);
            点阵位图= Bitmap.createScaledBitmap(tempbitMap,宽度,高度,真正的);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(上下文);
            wallpaperManager.setWallpaperOffsetSteps(1,1);
            wallpaperManager.suggestDesiredDimensions(宽度,高度);
            尝试 {
              wallpaperManager.setBitmap(位);
              }赶上(IOException异常E){
              e.printStackTrace();
            }
    }赶上(例外五){
        Log.e(TAG,e.toString());
    }
}
}
 

在的Manifest.xml添加这些行后

 <接收器
            机器人:名称=。BootReceiver
            机器人:启用=真
            机器人:出口=真
            机器人:标签=BootReceiver>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.BOOT_COMPLETED>
                < /作用>
            &所述; /意图滤光器>
        < /接收器>
 

I have one set of images in one drawable folder. I have one button to set image as wallpaper on device screen. But when I set this image as wallpaper its either zoom or cropped. I want image should fit on screen size. I have seen lots of links on SO but no link is work for me. This is the code I am trying so far.

Code-

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(mThumb[position]));
DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels; 
int width = metrics.widthPixels;
Bitmap bitmap = Bitmap.createScaledBitmap(bmap2, width, height, true); 
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
try {
  wallpaperManager.setBitmap(bitmap);
  } catch (IOException e) {
  e.printStackTrace();
}

I also added following lines in manifest-

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER" />

解决方案

Hello This is working with drawable image i have checked it..

                DisplayMetrics metrics = new DisplayMetrics(); 
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                int height = metrics.heightPixels; 
                int width = metrics.widthPixels;
                Bitmap tempbitMap = BitmapFactory.decodeResource(getResources(), R.drawable.img);
                Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
                wallpaperManager.setWallpaperOffsetSteps(1, 1);
                wallpaperManager.suggestDesiredDimensions(width, height);
                try {
                  wallpaperManager.setBitmap(bitmap);
                  } catch (IOException e) {
                  e.printStackTrace();
                }

Also mention these permissions in Manifest.xml..

    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
    <uses-permission android:name="android.permission.SET_WALLPAPER" />

This is screenshot..

For reset Fit wallpaper of screen store the image path in shared preferences and use Boot Completed Receiver then reset the same wallpaper on the screen....

The broadcast receiver is..

import java.io.IOException;

import android.app.WallpaperManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;

public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";

@Override public void onReceive(Context context,Intent intent){
    try{
            DisplayMetrics metrics = new DisplayMetrics(); 
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);
            int height = metrics.heightPixels; 
            int width = metrics.widthPixels;
            Bitmap tempbitMap = BitmapFactory.decodeResource(context.getResources(), R.drawable.img);
            Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); 
            wallpaperManager.setWallpaperOffsetSteps(1, 1);
            wallpaperManager.suggestDesiredDimensions(width, height);
            try {
              wallpaperManager.setBitmap(bitmap);
              } catch (IOException e) {
              e.printStackTrace();
            }
    }catch(Exception e){
        Log.e(TAG,e.toString());
    }
}
}

After Add these lines in Manifest.xml

       <receiver
            android:name=".BootReceiver"
            android:enabled="true"
            android:exported="true"
            android:label="BootReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" >
                </action>
            </intent-filter>
        </receiver>

阅读全文

相关推荐

最新文章