More actions
imported>zeldababo No edit summary |
imported>novaman No edit summary |
||
| Line 5: | Line 5: | ||
* 2012년 4월 중순 [[김준석]]이 영어공부하기 싫어서 만드는 어플 | * 2012년 4월 중순 [[김준석]]이 영어공부하기 싫어서 만드는 어플 | ||
* 안드로이드 배경화면이 한개인게 너무 싫어서 여러개 선택후 바꾸게 하는 어플을 만들고 싶어서 만들게됨. | * 안드로이드 배경화면이 한개인게 너무 싫어서 여러개 선택후 바꾸게 하는 어플을 만들고 싶어서 만들게됨. | ||
** 근데 난 배경화면 5개인데 -ㅅ-ㅋ | |||
= 제작 과정 = | = 제작 과정 = | ||
Revision as of 12:50, 12 April 2012
설명
- 2012년 4월 중순 김준석이 영어공부하기 싫어서 만드는 어플
- 안드로이드 배경화면이 한개인게 너무 싫어서 여러개 선택후 바꾸게 하는 어플을 만들고 싶어서 만들게됨.
- 근데 난 배경화면 5개인데 -ㅅ-ㅋ
제작 과정
- 어플에 필요한 배울것 체크
- Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기.
- Android의 Wallpaper 바꾸는 API찾아보기
- 특정시간되면 작동되게하는 알람기능 써보기
- 설계 후 통합 제작
- 디버그를 하겠지
어플에 필요한 배울것 체크
Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기
- Android Provider 믿을것이 못되더라.
- Stack Overflow에서 참조
package june.my.testdroid;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
public class TestdroidActivity extends Activity {
private static final int SELECT_PICTURE = 1;
private String selectedImagePath;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
openPhotoLibrary();
}
private void openPhotoLibrary() {
//Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent i = new Intent();
i.setType("image/*");
//i.setType(MediaStore.Images.Media.CONTENT_TYPE);
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(i, "Select Picture"), SELECT_PICTURE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
}
}
}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}
Android의 Wallpaper 바꾸는 API찾아보기
- Wallpaper바꾸는데 Permission 필요하더라 (Androidmenifest.xml파일 수정 요함)
- WallpaperManager 클래스를 통해 할수 있더라
- BitmapFactory를 통해 이미지 바꿀수 있더라
manager.setBitmap(Bitmap.createScaledBitmap(b, d.getWidth()*4, d.getHeight(), true));
왜 * 4냐면 내 폰에 배경화면이 4칸이라 답하겠더라
package june.mywallpaper.com;
import java.io.IOException;
import android.app.Activity;
import android.app.WallpaperManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MywallpaperActivity extends Activity {
private static final Button Button = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img1 = (ImageView)findViewById(R.id.imageView1);
img1.setImageResource(R.raw.wall1);
img1.setVisibility(View.VISIBLE);
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Bitmap b = BitmapFactory.decodeStream(getResources().openRawResource(R.raw.wall1));
WallpaperManager manager = WallpaperManager.getInstance(MywallpaperActivity.this);
final Display d = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
try{
manager.setBitmap(Bitmap.createScaledBitmap(b, d.getWidth()*4, d.getHeight(), true));
Toast.makeText(getApplicationContext(), "배경화면 지정 성공", 1).show();
}catch(IOException e){
e.printStackTrace();
Toast.makeText(getApplicationContext(), "배경화면 지정 실패", 1).show();
}
}
});
}
}