Java 如何从DCIM目录中随机选取一幅图像,将其设置为壁纸?
我在从DCIM目录中随机选取图像时遇到问题 以下是我的代码(在MainActivity.java中): 在舱单中,我声明:Java 如何从DCIM目录中随机选取一幅图像,将其设置为壁纸?,java,android,Java,Android,我在从DCIM目录中随机选取图像时遇到问题 以下是我的代码(在MainActivity.java中): 在舱单中,我声明: <uses-permission android:name="android.permission.SET_WALLPAPER"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> activity_m
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
activity_main.xml上没有任何内容
我的问题是:
位图位图=imagedir[indice]
我无法成功地在随机和位图之间搭建桥梁
有人有想法吗?所以,现在它起作用了,我找到了两个问题的解决方案:
- minSDK API23至API22: 最简单的方法是从头开始使用正确的minSDK API22重新创建一个全新的项目,以摆脱这一点。Java表示getExternalStoragePublicDirectory已被弃用,但下面的代码完全可以工作
- 右代码: 这是:
每次启动应用程序时,壁纸都会随机更改。图像存储在DCIM目录中。DCIM目录中只有图像,没有子目录。不要忘记在清单中声明用户的权限。
Bimap bitmap=imagedir.listFiles()[indice]代码>但是。。。DCIM目录中的图像通常不多。DCIM/Camera有更多功能。String secStore=System.getenv(“辅助存储”);File imagedir=新文件(secStore+“/DCIM”)代码>错误代码。替换为文件imagedir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM)代码>和。。DCIM目录包含子目录。您将把细分曲面设置为位图?谢谢blackapps。这里的答案是:1/完成,但我得到一个错误,必需的类型:位图,提供的是:File
;2&4/在当前情况下,DCIM没有子目录,只有图像;3/谢谢,我替换了代码,它很好。---那么你对1/有什么想法吗?
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
package com.example.randomwallpaper;
import androidx.appcompat.app.AppCompatActivity;
import android.app.WallpaperManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import static android.os.Environment.getExternalStoragePublicDirectory;
public class MainActivity extends AppCompatActivity {
Random ran;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String secStore = System.getenv("SECONDARY_STORAGE");
File imagedir = getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
int totalNumFiles = imagedir.listFiles().length; //nb of files in DCIM
//we pick up one randomly
ran = new Random();
int indice = ran.nextInt(totalNumFiles) + 1;
Bitmap bitmap = BitmapFactory.decodeFile(String.valueOf(imagedir.listFiles()[indice]));
WallpaperManager manager = WallpaperManager.getInstance(getApplicationContext());
try {
manager.setBitmap(bitmap);
Toast.makeText(getApplicationContext(), "WP set!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Error!", Toast.LENGTH_SHORT).show();
}
}
}