Showing posts with label Wallpaper. Show all posts
Showing posts with label Wallpaper. Show all posts

Set wallpaper using resource inside APK


This example modify from the post "Restore default build-in wallpaper", to add function to set wallpaper using resource inside APK.


Create /res/raw/ folder in your Android Studio project. Refer: Android Studio error: Expected resource of type raw

Modify layout/activity_main.xml to add button to "Load Wallpaper from from Resources".
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.blogspot.android_er.androidwallpaper.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />
<Button
android:id="@+id/displaywp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Display Wallpaper"/>
<Button
android:id="@+id/loadwp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load Wallpaper from Gallery"/>
<Button
android:id="@+id/loadwpres"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load Wallpaper from from Resources"/>

<Button
android:id="@+id/restorewp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Restore default Wallpaper"/>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>


MainActivity.java
package com.blogspot.android_er.androidwallpaper;

import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.FileNotFoundException;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

ImageView imageWallpaper;
Button btnLoadWallpaper, btnDisplayWallpaper, btnRestoreWallpaper;
Button btnLoadWallpaperRes;

private static final int RQS_OPEN_IMAGE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageWallpaper = (ImageView)findViewById(R.id.image);

btnDisplayWallpaper = (Button)findViewById(R.id.displaywp);
btnDisplayWallpaper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayWallpaper();
}
});

btnLoadWallpaper = (Button)findViewById(R.id.loadwp);
btnLoadWallpaper.setOnClickListener(btnLoadWallpaperOnClickListener);

btnRestoreWallpaper = (Button)findViewById(R.id.restorewp);
btnRestoreWallpaper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WallpaperManager myWallpaperManager =
WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.clear();
} catch (IOException e) {
e.printStackTrace();
}
}
});

btnLoadWallpaperRes = (Button)findViewById(R.id.loadwpres);
btnLoadWallpaperRes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WallpaperManager myWallpaperManager =
WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.setResource(R.raw.androidstudio);
} catch (IOException e) {
e.printStackTrace();
}

}
});


displayWallpaper();

}

View.OnClickListener btnLoadWallpaperOnClickListener = new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent();

if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.KITKAT) {
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
} else {
intent.setAction(Intent.ACTION_GET_CONTENT);
}

intent.addCategory(Intent.CATEGORY_OPENABLE);

// set MIME type for image
intent.setType("image/*");

startActivityForResult(intent, RQS_OPEN_IMAGE);
}
};

private void displayWallpaper(){
WallpaperManager myWallpaperManager =
WallpaperManager.getInstance(getApplicationContext());
Drawable drawableWallpaper = myWallpaperManager.getDrawable();
imageWallpaper.setImageDrawable(drawableWallpaper);

Toast.makeText(this,
drawableWallpaper.getMinimumWidth() + " x " + drawableWallpaper.getMinimumHeight()
+ "\n" +
drawableWallpaper.getIntrinsicWidth() + " x " + drawableWallpaper.getIntrinsicHeight(),
Toast.LENGTH_LONG).show();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == RQS_OPEN_IMAGE) {
Uri dataUri = data.getData();
Uri wallpaperUri = dataUri;
Toast.makeText(this, wallpaperUri.toString(), Toast.LENGTH_LONG).show();

Bitmap newOriginalBM= loadBitmap(dataUri);
reloadWallpaper(newOriginalBM);
}
}
}

private Bitmap loadBitmap(Uri src) {

Bitmap bm = null;

try {
bm = BitmapFactory.decodeStream(
getBaseContext().getContentResolver().openInputStream(src));
} catch (FileNotFoundException e) {
e.printStackTrace();
}

return bm;
}

private void reloadWallpaper(Bitmap bm){
if(bm != null){
WallpaperManager myWallpaperManager =
WallpaperManager.getInstance(getApplicationContext());

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(myWallpaperManager.isWallpaperSupported()){
try {
myWallpaperManager.setBitmap(bm);
} catch (IOException e) {
e.printStackTrace();
}
}else{
Toast.makeText(MainActivity.this,
"isWallpaperSupported() NOT SUPPORTED",
Toast.LENGTH_LONG).show();
}
}else{
try {
myWallpaperManager.setBitmap(bm);
} catch (IOException e) {
e.printStackTrace();
}
}
}else{
Toast.makeText(MainActivity.this, "bm == null", Toast.LENGTH_LONG).show();
}
}
}


uses-permission of "android.permission.SET_WALLPAPER" is needed.

Jenis wallpaper yang memberatkan kinerja ponsel

Jenis wallpaper yang memberatkan kinerja ponsel. Tahukah anda bahwa bukan hanya aplikasi yang bertumpuk yang membuat berat kinerja ponsel, namun wallpaper yang terpasang juga mempengaruhi ringan dan beratnya proses sistem di ponsel. Bagi pengguna smartphone android wajib tahu apa saja jenis atau tipe wallpaper yang bisa membuat ponsel kita lemot dan kinerjanya melambat. mari kita bahas satu persatu.


Di bawah ini adalah beberapa jenis atau tipe wallpaper layar android yang bisa menurunkan kinerja ponsel yaitu :

1. Wallpaper animasi. dimana wallpaper dengan format gif maupun swf umumnya mempunyai ukuran file yang lebih besar dari format gambar jpeg. Apalagi bila animasi tersebut mempunyai resolusi yang besar tentu akan semakin membuat kinerja ponsel melambat. Bila RAM ponsel tidak cukup besar hindari pemasangan wallpaper animasi.

2. Wallpaper video, kalau tampilan yang satu ini bisa dipastikan akan lwbih memperberat kinerja ponsel. Wallpaper video umumnya mempunyai ukuran file lebih besar dari wallpaper animasi. 

3. Wallpaper foto beresolusi besar. Bila ponsel anda mempunyai RAM yang kecil lebih baik jangan memasang foto dengan ukuran file serta resolusi yang besar karena akan memperberat RAM dan kinerja ponsel keseluruhan.

Dari uraian diatas bisa disimpulkan bahwa penggunaan gambar atau wallpaper penghias di layar ponsel juga memakan sebagian memori RAM ponsel. Jadi pilihlah wallpaper yang ringan dan berukuran file kecil untuk menjaga agar kinerja ponsel tetap ringan.