Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Android/WallpaperChanger: Difference between revisions

From ZeroWiki
imported>zeldababo
No edit summary
 
imported>zeldababo
No edit summary
Line 7: Line 7:


= 제작 과정 =
= 제작 과정 =
* 어플에 필요한 배울것 체크
# 어플에 필요한 배울것 체크
** Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기.
** Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기.
** Android의 Wallpaper 바꾸는 API찾아보기
** Android의 Wallpaper 바꾸는 API찾아보기
** 특정시간되면 작동되게하는 알람기능 써보기
** 특정시간되면 작동되게하는 알람기능 써보기
* 설계 후 통합 제작
# 설계 후 통합 제작
 
# 디버그를 하겠지
= 어플에 필요한 배울것 체크 =
= 어플에 필요한 배울것 체크 =
== Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기 ==
== Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기 ==

Revision as of 18:39, 11 April 2012

설명

  • 2012년 4월 중순 김준석이 영어공부하기 싫어서 만드는 어플
  • 안드로이드 배경화면이 한개인게 너무 싫어서 여러개 선택후 바꾸게 하는 어플을 만들고 싶어서 만들게됨.

제작 과정

  1. 어플에 필요한 배울것 체크
    • Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기.
    • Android의 Wallpaper 바꾸는 API찾아보기
    • 특정시간되면 작동되게하는 알람기능 써보기
  1. 설계 후 통합 제작
  2. 디버그를 하겠지

어플에 필요한 배울것 체크

Android의 기본 어플로 장착되어있는 Gallery 어플로 Intent넘긴후 리스트 다시 받아오기

  • Android Provider 믿을것이 못되더라.
   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를 통해 이미지 바꿀수 있더라
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();
            	}
            	
            }
        });
    }
}


2012/활동지도