Programming/Android2010.07.14 19:27

AndroidManifest.xml 에 보면 versionName 이라고 있습니다.


이 것을 실행 중에 가져오려면 다음과 같은 방법을 사용해야 한다고 합니다.

	String version = "0.0.0";

	try {
		PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
		version = pInfo.versionName;
	} catch (NameNotFoundException e) {
		e.printStackTrace();
	}

 

Posted by 초프(초보 프로그래머)
Programming/Android2010.07.14 19:11

가로, 세로로 화면을 전환할때 마다

onCreate() -> onStart() -> onResume()

이런 순서대로 실행됩니다.

만약 파일을 읽거나 네트워크처리가 들어가게되면 중복처리가 발생할 수도 있습니다.

이걸 막는 방법에는 몇가지가 있는듯 하나

제일 간단한 방법인거 같은 AndroidManifest.xml 을 수정하는 방법을 적어봅니다.





testA 액티비티는 아무런 수정이 없으므로 위와 같은 문제가 존재합니다.

testB 액티비티는 가로, 세로 화면 전환에서는 위의 문제가 발생하지 않습니다.

testC 액티비티는 가로, 세로 화면 전환과 쿼티자판을 열고 닫을때에도 위의 문제가 발생하지 않습니다.


화면 전환이나 쿼티자판을 열고 닫을때에도 onCreate -> onStart() -> onResume() 이 실행되지 않게 하려면 이방법이 가장 쉬운 방법이 될것 입니다.

Posted by 초프(초보 프로그래머)
Project2010.03.10 23:42

 




작성한 서버와 클라이언트 클래스를 이용해서 안드로이드와 데스크탑의 채팅을 만들어 보았습니다.

기존의 채팅서버와 채팅 클라이언트는 많이 변하지 않았고

안드로이드 클라이언트 추가가 주가 되었습니다.

안드로이드 실행시에는 아이피를 수정해주셔야 합니다~


Posted by 초프(초보 프로그래머)
Programming/Android2010.02.25 22:44

 가로, 세로 두가지 모두 테스트를 하기 위해 두개의 에뮬레이터를 만들었습니다.

480x320
320x480




아직 정확하지는 않지만.... 대충 해보니...

메뉴키 - PageUp / F2
취소키 - ESC
잠금키 - F4 / F7
조이스틱 입력(?) - F6
3G 켜기/끄기 - F8

Posted by 초프(초보 프로그래머)
Programming/Android2010.02.18 00:54
A : 전환할 Activity Class

Intent B = new Intent(this, A.class);
startActivity(B);
Posted by 초프(초보 프로그래머)
Programming/Android2010.02.15 16:04

vertical과 다른 점은 slidingdrawer의 속성중에 android:orientation 를 "horizontal"로 바꾸어 주면 됩니다.

물론 handle도 거기에 맞게 해줘야 합니다.

handle에 넣을 이미지가 없어서 대충 글자로 해보았습니다.



    
		
    
	
		
		
		
			
		
	



 
Posted by 초프(초보 프로그래머)
Programming/Android2010.02.15 15:22
안드로이드 메인에서 프로그램 목록을 볼때 위로 드래그하는 것과 같은 것이다.

slidingdrawer는 handle과 content 두개가 존재합니다.
handle : 슬라이딩시 클릭하는 부분
Content : 슬라이딩된 후에 내용이 보일 부분 이 두 부분은 필수 입니다.


handle과 content는 항상 이걸 써야한다는 제한은 없어 보인다. TextView, ImageView도 되고 Layout도 되는것 같다. 하지만 content에는 꼭 Layout을 써주는 것이 좋을 것 같다.

FrameLayout은 모든 것이 한곳에서 그려지므로 겹칠수 있다. 그래서 content에서 Layout을 써주지 않으면 내용이 겹쳐 보인다.



	
		
    
	
		
		
		
	


위와 같이 하면 내용이 겹치게 되어 다음과 같이 출력되게 됩니다.


이 문제를 가장 쉽게 해결하는 방법은 배경색으로 덮어 주는 것이다.

하지만 ImageView에 적용해봤자 효과가 없을 것이고... 그래서 Slidingdrawer에 배경색을 적용해 보니... 다음과 같다..

 


와전히 가려진다...  해결 방법은 content안에 layout을 두고 거기에 배경색을 넣는 것이다.

 





    
		
    
	
		
		
		
			
		
	


slidingdrawer는 수직으로 움직이는 것 뿐만 아니라 수평으로 움직이는 것도 있다.

꽤나 재밌어 보여서 이것저것 찾아 봤음. ^^;
Posted by 초프(초보 프로그래머)
Programming/Android2010.02.15 14:55

[2010-02-15 14:18:54 - AndroidTest]Re-installation failed due to different application signatures.
[2010-02-15 14:18:54 - AndroidTest]You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2010-02-15 14:18:54 - AndroidTest]Please execute 'adb uninstall google.android.test' in a shell.


검색을 통해서 해결 방법을 알아냈다.

에뮬레이터에 이미 실행중인 프로그램과 새로 실행할려는 프로그램의 차이가 많이나서 이런 오류가 난다고 합니다.

해결 방법은에뮬레이터에 이미 올라가 있는 프로그램을 삭제하는 것입니다.

Setting > Applications > ManageApplications

으로 들어간 후 프로그래명을 선택한 다음 Uninstall 을 클릭하면 됩니다. ^^

 

 

 
Posted by 초프(초보 프로그래머)
Programming/Android2010.02.01 14:55
http 프로토콜을 이용하여 통신을 하는 예제입니다.

주소에 해당되는 문서의 내용을 받아옵니다. 

여기서는 그냥 일반 html 문서서를 가져 오도록 해보았습니다.  
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Test extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        TextView text = (TextView)findViewById(R.id.htmlText);
        
        URL url = null;
        
		try {
			url = new URL("http://family7914.cafe24.com");
        	HttpURLConnection http = (HttpURLConnection)url.openConnection();
        	BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream()));
        	StringBuffer buffer = new StringBuffer();
        	
        	int c;
        	
        	while((c=in.read()) != -1){
        		buffer.append((char)c);
        	}
        	
        	text.setText(buffer);
        	
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}

 

코드를 실행해보면 위와 같은 결과가 나옵니다.

만약 결과가 나오지 않거나 오류가 발생한다면... 
처음으로 생각해 볼수 있는 것이 Manifest의 Permission 입니다. 
이건 우리가 어떤 기능을 사용할 것이다 라고 미리 알려주는 것입니다. 
그래야만 사용할 수 있거든요~
두번째는 제가 어리석어서 생긴 경우인데...
실행을 할 경우 문서의 용량이 크면 로딩이 길게 되어있습니다. 
그리고 그전에 디버깅을 위한 메세지가 뜨는데 그것을 그냥 오류로 생각해 버리는겁니다.
그러므로 메세지를 잘 확인하세요~ ^^;
Posted by 초프(초보 프로그래머)