Android关于自定义更换手机桌面
来源:互联网 发布:生成对抗网络 知乎 编辑:程序博客网 时间:2024/04/30 03:34
本人这几天一直在研究一个应用的实现。此小应用为本人的私家老师——孙先生给本人留的作业。作业的内容为打开此应用即调用手机桌面为布局的ImageView,布局最下方设置两个Button,其一是设置背景图片,其二是更换背景图片。点击设置图片可弹出选择拍照还是去图库,图片可裁剪,选好的图片可以显示在布局上,被imageview调用。点击更换图片即可把手机桌面更换为选好的图片。
本人不才只实现了部分代码,可以把相机拍照及其裁剪的图片成功应用到手机桌面背景上,而在图库选择的及其裁剪的图片无法实现应用到手机桌面上。 本人想用 MainActivity.this.setWallpaper(BitmapFactory.decodeFile(picturePath)) 实现图库及其裁剪后的图片更换到手机桌面 结果不成,望高人指点。
package com.example.changethewallpaper;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.WallpaperManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private ImageView iv;
private InputStream is;
private Uri uri;
private Button bt00;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) this.findViewById(R.id.image);
iv.setImageDrawable(getWallpaper());
findViewById(R.id.but01).setOnClickListener(this);
bt00 = (Button) this.findViewById(R.id.but00);
bt00.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
MainActivity.this.setWallpaper(BitmapFactory.decodeFile(uri.getPath())); //此处即为可调用拍照及其裁剪功能实现手机桌面的更换。
} catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "更换桌面成功!",
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("选择图片位置")
.setCancelable(false)
.setPositiveButton("来自图库",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// TODO 跳到图库
Intent innerIntent = new Intent(
Intent.ACTION_GET_CONTENT); // "android.intent.action.GET_CONTENT"
innerIntent.setType("image/*"); // 查看类型
// StringIMAGE_UNSPECIFIED="image/*";详细的类型在com.google.android.mms.ContentType中
Intent wrapperIntent = Intent.createChooser(
innerIntent, null);
startActivityForResult(wrapperIntent, 0);
}
})
.setNegativeButton("来自相机",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent i = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
// TODO....
File myImageDir = new File(
"/mnt/sdcard/DCIM/Camera/");
// 创建图片保存目录
if (!myImageDir.exists()) {
myImageDir.mkdirs();
}
// 根据时间来命名
File file = null;
try {
file = File.createTempFile(
"" + System.currentTimeMillis(),
".jpg", myImageDir);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
uri = Uri.fromFile(file);
i.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(i, 1);
}
}).create().show();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK) { //requestCode 各不一样
Uri uri = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, filePathColumn,
null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
iv.setImageBitmap(BitmapFactory.decodeFile(picturePath)); //调用图库图片到imageview
// TODO....
final Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(uri, "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputX", 132);
intent1.putExtra("outputY", 132);
intent1.putExtra("return-data", false);//若为 true 则不会保存裁剪后的图片
startActivityForResult(intent1, 2);
Log.v("xuweiwei", "data0 ==" + data);
}
if (requestCode == 1&& resultCode == RESULT_OK) {
iv.setImageBitmap(BitmapFactory.decodeFile(uri.getPath()));//调用拍照照片到imageview
// TODO......
final Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(uri, "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputX", 132);
intent1.putExtra("outputY", 132);
intent1.putExtra("return-data", false);
startActivityForResult(intent1, 3);
Log.v("xuweiwei", "data1 ==" + data);// null,保存在截图里
}
if (requestCode == 2&& resultCode == RESULT_OK) {
Uri uri = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, filePathColumn,
null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
iv.setImageBitmap(BitmapFactory.decodeFile(picturePath));//调用图库裁剪后的图片到imageview
}
if (requestCode == 3 && resultCode == RESULT_OK) {
Uri uri = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri, filePathColumn,
null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
iv.setImageBitmap(BitmapFactory.decodeFile(picturePath));//调用裁剪后的拍照照片到imageview
}
}
}
- Android关于自定义更换手机桌面
- 关于更换手机字体
- 关于更换手机的安全问题
- 关于自动更换xp桌面的壁纸。
- android设置手机桌面
- Android 手机桌面快捷方式
- Android-管理Android手机桌面
- Android自定义桌面
- 自定义桌面launcher-android
- 自定义桌面launcher-android
- Android 自定义桌面(一)
- android自定义桌面(launcher)
- Android 自定义桌面空间 AppWidget
- 自己动手写android手机桌面-第一篇
- 自己动手写android手机桌面-第一篇
- 自己动手写android手机桌面(第一篇)
- Android添加快捷方式(Short)到手机桌面
- Android应用创建手机桌面快捷方式
- service中使用自定义dialog
- Git在http代理中使用ssh
- pos关键流程
- 云风:C语言的前世今生
- CSS3中文本的描边(普通描边、凸起、凹陷)和发光效果
- Android关于自定义更换手机桌面
- Oracle OS认证与口令文件认证详解
- 有哪位大神知道windows下如何将golang的可执行文件编译成linux下的可执行文件
- python 破解 Android 解锁 Gesture.key
- JAVA之网格布局管理器中JSeparator的使用以及GridBagLayout的注意细节
- 弹出页面(window.showModalDialog(...)/iframe)中的导出Excel事件 点击没反应的问题
- 数据库设计中的 几点 技巧 理解
- 基于jQuery.cookie.js的Cookie实现
- Java 运用 Bouncy Castle 进行 AES128 加密解密(CBC 模式 PKCS7 填充 )