我想弄个东西,大体就是每天开启模拟器的时候都能更换不同的桌面背景!请问这个怎么实现!大家给点意见,有源码最好了!
解决方案 »
- 【初级】findViewById返回空指针,原因是什么?
- broadcastreceiver给activity传数据
- 如何减小使用AudioRecord采集音频时的延迟?
- android中 模拟时钟AnalogClock和数字时钟DigitalClock的属性
- 如何让后添加的activity最先运行
- 全屏时重开关电源后全屏失效,如何解决!?
- 下载android时 repo总出现问题
- 很奇怪,android2.1真机无法取得生日,而模拟器的编辑联系人就没有生日字段
- android手机QQ登陆页面之前闪现的那个是怎么实现的啊
- 关与android链接FMS的问题
- 关于全屏模式的疑问
- 如何设置一个ImageView里面的图片宽度一定,而高度按原长宽比例放大或缩小?
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取文件夹路径
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/image";
//获取该目录下所有文件
File [] files = new File(path).listFiles();
//随机出图片文件下标
int index = (int)(Math.random() * files.length);
//根据下标取出图片文件并设置成为模拟器背景
Bitmap bm = BitmapFactory.decodeFile(files[index].getAbsolutePath());
try {
setWallpaper(bm);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.archermind.activity"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
</manifest>
前提是要先把需要用的图片文件PUSH到sd卡中才可以访问,顺便借问一下大神,android不能直接访问本地磁盘中的文件么?我下面的代码files数组始终是null,获取不到路径下的文件public File [] getAllFiles(){
String path = "D:/image";
//获取文件夹目录
File directory = new File(path);
//获取目录下的所有图片文件数组
File [] files = directory.listFiles();
return files;
}
注册开机广播,开机时随机找张图片或用SharedPreferences记录上次的图片来算当前要显示的图片,显示就可以了。
public class RootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("onReceive BroadcastReceiver");
/*SharedPreferences内记录上次显示图片的索引或随机产生一个*/
/*设置背景图片*/
Bitmap bitMap = BitmapFactory.decodeResource(arg0.getResources(),R.drawable.pic1);
try {
arg0.getApplicationContext().setWallpaper(bitMap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
}注册广播和允许权限<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="root.start"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".RootActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="RootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
</manifest>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
package root.start;
import android.app.Activity;
import android.os.Bundle;
public class RootActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Bitmap bitMap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
// try {
// getApplicationContext().setWallpaper(bitMap);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
}
}