28 5월

웹에 있는 이미지를 읽어서 ImageView에 출력

package yell.exam01;

import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import yell.exam01.R;

public class test_network extends Activity {

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test_network);
	}

	public void mOnClick(View v) {

		EditText et = (EditText) findViewById(R.id.textURL);
		ImageView iv = (ImageView) findViewById(R.id.imageview1);

		if (et.getText().toString() != null) {
			try {
				HttpGet httpget = new HttpGet(et.getText().toString());
				DefaultHttpClient client = new DefaultHttpClient();
				HttpResponse response = client.execute(httpget);
				InputStream is = new BufferedHttpEntity(response.getEntity()).getContent();

				Bitmap bit = BitmapFactory.decodeStream(is);
				iv.setImageBitmap(bit);

				String path = Environment.getDataDirectory().getAbsolutePath();
				path += "/data/yell.exam01/files/test.png";

				Log.d("YELL", path);
				FileOutputStream fos = new FileOutputStream(path);
				bit.compress(Bitmap.CompressFormat.PNG, 100, fos);
			}
			catch (Exception e) {
				// TODO: handle exception
				Log.d("YELL", e.getMessage());
			}
		}
	}
}
28 5월

쓰레드를 사용해서 웹페이지 소스 가져오기

package yell.exam01;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import yell.exam01.R;

public class test_network extends Activity {

	downloadThread mThread;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test_network);
	}

	public void mOnClick(View v) {

		EditText et = (EditText) findViewById(R.id.textURL);
		ImageView iv = (ImageView) findViewById(R.id.imageview1);

		if (et.getText().toString() != null) {
			mThread = new downloadThread(et.getText().toString());
			mThread.start();
		}
	}

	class downloadThread extends Thread {
		String mAddr;

		public downloadThread(String addr) {
			// TODO Auto-generated constructor stub
			mAddr = addr;
		}

		@Override
		public void run() {
			// TODO Auto-generated method stub
			HttpGet httpget = new HttpGet(mAddr);
			DefaultHttpClient client = new DefaultHttpClient();
			try {
				client.execute(httpget, mResHandler);
			}
			catch (Exception e) {
				// TODO: handle exception
			}
		}

		ResponseHandler<string> mResHandler = new ResponseHandler<string>() {
			public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
				// TODO Auto-generated method stub

				Log.d("YELL", "읽기 스트림 시작");

				StringBuilder html = new StringBuilder();
				try {
					BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
					String line = null;
					while ((line = br.readLine()) != null) {
						html.append(line + "\n");
					}
					br.close();

					Log.d("YELL", "끗~ 메시지 보냄");
					Log.d("YELL", html.substring(0, 1000).toString());

					Message message = mAfterDown.obtainMessage();
					Bundle bundle = new Bundle();
					bundle.putString("result", html.toString());
					message.setData(bundle);
					mAfterDown.sendMessage(message);
				}
				catch (Exception e) {
					// TODO: handle exception
				}

				return html.toString();
			}
		};

		Handler mAfterDown = new Handler() {
			public void handleMessage(android.os.Message msg) {
				String sResult = msg.getData().getString("result");
				TextView tv = (TextView) findViewById(R.id.textview_result);
				tv.setText(sResult);
			};
		};
	}
}
24 3월

탭(TabHost, TabWidget)

<?xml version="1.0" encoding="utf-8"?>
<tabhost android:id="@android:id/tabhost" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent">	
	<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" android:padding="5dip">
		<tabwidget android:id="@android:id/tabs" android:layout_height="wrap_content" android:layout_width="fill_parent">				
		<framelayout android:id="@android:id/tabcontent" android:layout_height="fill_parent" android:layout_width="fill_parent" android:padding="5dip">
	</framelayout></tabwidget></linearlayout>
</tabhost>
public class TabTest extends TabActivity {

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tab_test);

		TabHost mTab = getTabHost();
		Intent intent;

		intent = new Intent().setClass(this, Tab01.class);
		mTab.addTab(mTab.newTabSpec("tag1").setIndicator("TAB1").setContent(intent));

		intent = new Intent().setClass(this, Tab02.class);
		mTab.addTab(mTab.newTabSpec("tag2").setIndicator("TAB2").setContent(intent));

		intent = new Intent().setClass(this, Tab03.class);
		mTab.addTab(mTab.newTabSpec("tag3").setIndicator("TAB3").setContent(intent));

		mTab.setCurrentTab(0);
	}
}
24 3월

암시적 인텐트

public void mOnClick(View v) {
	Intent intent;
	switch (v.getId()) {
		case R.id.btnWeb:
			intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.yell.co.kr"));
			startActivity(intent);
			break;

		case R.id.btnCall:
			intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:010-1234-5678"));
			startActivity(intent);
			break;

		case R.id.btnPhoto:
			intent = new Intent(Intent.ACTION_VIEW);
			String sd = Environment.getExternalStorageDirectory().getAbsolutePath();
			Uri uri = Uri.fromFile(new File(sd + "/devil.jpg"));
			intent.setDataAndType(uri, "image/jpeg");
			startActivity(intent);
			break;

		default:
			break;
	}
}
24 3월

액티비티간의 통신

[Codejava]
package yell.exam01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class Exam01Activity extends Activity {

TextView mText;
final static int ACT_EDIT = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);

mText = (TextView) findViewById(R.id.textView1);
}

public void modifyText(View v) {
switch (v.getId()) {
case R.id.btnModify:
Intent intent = new Intent(this, Exam01_modifyText.class);
intent.putExtra(“TextIn”, mText.getText().toString());
startActivityForResult(intent, ACT_EDIT);
break;

default:
break;
}
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ACT_EDIT:
if (resultCode == RESULT_OK) {
mText.setText(data.getStringExtra(“TextOut”));
}
break;

default:
break;
}
}

public void showSubActivity(View v) {
Intent intent = new Intent(this, Exam01SubActivity.class);
startActivity(intent);
}
}
[/code]

package yell.exam01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class Exam01_modifyText extends Activity {

	EditText mEdit;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.modifytext);

		mEdit = (EditText) findViewById(R.id.editText1);

		Intent intent = getIntent();
		String text = intent.getStringExtra("TextIn");
		if (text != null) {
			mEdit.setText(text);
		}
	}

	public void mOnClick(View v) {
		switch (v.getId()) {
			case R.id.btnOk:
				Intent intent = new Intent();
				intent.putExtra("TextOut", mEdit.getText().toString());
				setResult(RESULT_OK, intent);
				finish();
				break;

			default:
				setResult(RESULT_CANCELED);
				finish();
				break;
		}
	}
}
17 7월

이벤트 처리 > 익명 이너 클래스를 바로 사용

package yell.exam01;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

public class Exam01Activity extends Activity {
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        LinearLayout linear = new LinearLayout(this);
        linear.setOnTouchListener(new View.OnTouchListener() {			
            public boolean onTouch(View v, MotionEvent event) {
                if ( event.getAction() == MotionEvent.ACTION_DOWN ) {
                    Toast.makeText(Exam01Activity.this, "Touched!!!", Toast.LENGTH_SHORT).show();
                    return true;
                }
                return false;
            }
        });
        setContentView(linear);
    }
}

LinearLayout 객체를 생성한 뒤, 터치 리스너를 등록했다.

리스너에는 MotionEvent.ACTION_DOWN 즉, 화면 터치시 “Touched!!!”를 출력하도록 했다.

여러가지 이벤트 처리방법이 있는데 가장 간편한 방법이다.

20 6월

Android SDK Tools Setup :: JDK not found

Java SE Development Kit (JDK) not found.

Android SDK relies on the Java SE Development Kit (JDK).
Go to http://java.sun.com > Downloads > Java SE > JDK to download adn install a JDK before continuing.

Note: A Java Runtime (JRE) is not enough to develop for Android.

Visit java.sun.com

==================================================================

안드로이드 SDK 설치시,
JDK가 설치되어 있음에도 Next 가 안되는 상황발생

해결방법(1)
http://codearetoy.wordpress.com/2010/12/23/jdk-not-found-on-installing-android-sdk/
위 링크로 이동해서 따라하면 된다
32bit로 설치하든지 zip 파일로 설치해 보길 권하고 있다.

해결방법(2)
Next > 버튼이 비활성화 되어 있다면 < Back 한번 눌렀다가 다시 와보면 Next >가 활성화 되어 있다.
설치를 진행하면 된다…. -_-;;;;;;;;;

사용자 삽입 이미지