달력

052012  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  




광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject : 안드로이드 디버깅하기

최종수정일 : 2012.05.25


안녕하세요~^^
안드로이드...개발하다가 정말 지쳐서 디버깅을 어떻게 할까 하다 하다 못해
Toast 를 고정적으로 띄워놓고, 값을 변경 시켜버리기로 하였습니다.

결국 Logcat 에서 100개 정도 뜨다가 안뜨는 그런 버그... 찾기도 힘들고 귀찮아서 -_-ㅋ
토스트로 해결을 해보자. 하였습니다.

물론 디버깅하는데 개발환경 및 등등등 에 따라서 저의 디버깅 방법이 맞지 않을 수 있으나,

뭐 저두 저 나름대로 편한대로 한거니깐. 써보시길,

by 퓨림노

글을 작성하겠습니다.
(스크린샷은 찍기 귀찮네요 ㅎㅎㅎㅎ)


1. Toast 를 화면의 고정적으로 띄우도록 하자.


    Handler m_handler = new Handler() {
        public void handleMessage( Message msg ){
            if( msg.what == 0 ){
                Toast.makeText( m_context, "Init Orientation Mode", Toast.LENGTH_SHORT).show();
            }
            else if( msg.what == 1 ){
                int angle = (int)msg.arg1;
               
                if( m_Msg == null ){                   
                    //m_Msg = Toast.makeText( m_context, "Angle = " + angle, Toast.LENGTH_SHORT);                   
                    m_Msg = Toast.makeText( m_context, (String)msg.obj, Toast.LENGTH_SHORT);
                }
                else{
                    m_Msg.setGravity(Gravity.BOTTOM | Gravity.RIGHT, 0, 0);                   
                    //m_Msg.setText( "Angle = " + angle );             
                    m_Msg.setText( (String)msg.obj );
                    m_Msg.show();
                }
            }   
        }
    };

Toast 의 return 되는 값을 저장해두고 값이 없어지는지 아닌지 확인을 합니다.

그리고 Toast 의 메시지를 setText() 함수를 사용하여 내용을 변경하도록 합니다.


자세한 설명은 소스가 짧기 때문에 안합니다~^^


            // test Toast Message
            String str = "init : " + (int)SensorInitAzimuth + ", Present : " + (int)SensorPresentAzimuth + ", diff : " + diff;
            Message msg = Message.obtain();
            msg.what = 1;
            msg.arg1 = (int)angle[2];//(int)(-presentImgAzimuth);
            msg.obj = (Object)str;
            m_handler.sendMessage(msg);

토스트내용 출력이야 당연히 아실꺼구...


그냥 그렇게 하면 됩니다.


저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노

귀찮은 관계로 글자만 올리도록 합니다. 


이클립스 메뉴,


Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Java -> Java Editor Text Font -> Change


아래 그림과 같이 수정하시면 됩니다. 




저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노




광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [Android,OpenGL,Java] Quaternion to Euler

최종수정일 : 2012.04.16

안녕하세요~^^

  Quaternion 을 Euler 로 변환하는 코드 입니다. 

by 퓨림노

글을 작성하겠습니다.

Reference URL 

http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm


위의 주소를 참조하시면 됩니다만!

코드를 수정할 때 Quaternion 이 normalized 되어 있다면, 위에 방식으로, 아니면 아래 방식으로 사용함.


01. normalized

public vector3f Quat2Angle(float x, float y, float z, float w) {

		double pitch, roll, yaw;

		double test = x * y + z * w;
		if (test > 0.499) { // singularity at north pole
			yaw = 2 * Math.atan2(x, w);
			pitch = Math.PI / 2;
			roll = 0;

			vector3f euler = new vector3f((float) pitch, (float) roll,
					(float) yaw);
			return euler;
		}
		if (test < -0.499) { // singularity at south pole
			yaw = -2 * Math.atan2(x, w);
			pitch = -Math.PI / 2;
			roll = 0;
			vector3f euler = new vector3f((float) pitch, (float) roll,
					(float) yaw);
			return euler;
		}
		double sqx = x * x;
		double sqy = y * y;
		double sqz = z * z;
		yaw = Math.atan2(2 * y * w - 2 * x * z, 1 - 2 * sqy - 2 * sqz);
		pitch = Math.asin(2 * test);
		roll = Math.atan2(2 * x * w - 2 * y * z, 1 - 2 * sqx - 2 * sqz);

		vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
		return euler;

	}

gg

01. non-normalized

	public vector3f Quat2Angle(float x, float y, float z, float w) {

		double pitch, roll, yaw;
		double sqw = w * w;
		double sqx = x * x;
		double sqy = y * y;
		double sqz = z * z;
		double unit = (sqx * sqy) + (sqz * sqw);
		double test = (x * y) + (z * w);

		// singularity at north pole
		if (test > 0.499 * unit) {
			pitch = 0.0;
			roll = 2.0 * Math.atan2(x, w);
			yaw = Math.PI / 2;
			vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
			return euler;
		}

		// singularity at south pole
		if (test < -0.499 * unit) {

			pitch = 0.0;
			roll = -2.0 * Math.atan2(x, w);
			yaw = Math.PI / 2;

			vector3f euler = new vector3f((float) pitch, (float) roll,(float) yaw);
			return euler;
		}

		// attitude = pitch (X Axis of OSG)
		// heading = roll (Y Axis of OSG)
		// bank = yaw (Z Axis of OSG)
		pitch = Math.atan2((2.0 * x * w) - (2.0 * y * z), -sqx + sqy - sqz + sqw);
		roll = Math.atan2((2.0 * y * w) - (2.0 * x * z), sqx - sqy - sqz + sqw);
		yaw = Math.asin(2.0 * test / unit);

		vector3f euler = new vector3f((float) pitch, (float) roll, (float) yaw);
		return euler;
	}*/


코드를 따라서 작성해보고, 위의 URL 에서 계산해서 검증할 수 있다. 

확인을 꼭 해보도록 하자. 

그리고 인터넷 소스는 항상 신뢰하지 말자. (수식을 보고 확인을 하고 넘어가도록 하자. )



다 읽었으면 배너 클릭! (뭐 못보면 할 수 없고...)


저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노




광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [Java] Java 파일 입출력

최종수정일 : 2012.04.15

안녕하세요~^^
  파일 입출력을 예전에 정리한번 하였는데, 원하는 부분이 없어서 다시 포스팅 합니다. 
by 퓨림노

글을 작성하겠습니다.

1. 파일 Read
2. 파일 write
3. 현재 시간 구하기
4. 파일 경로는 어디로 가는가!?



1. 파일 Read

2. 파일 write
3. 현재 시간 구하기
4. 파일 경로는 어디로 가는가!?

파일 읽기
public void FileRead( String filename ){
		
		String strline = null;
		try {
			
			FileReader fr = new FileReader(filename);
			BufferedReader br = new BufferedReader(fr);
			
			while( (strline = br.readLine()) != null ) {
			  // 요기에 원하는 거 소스코드 첨부하기
			}
	        }
			br.close();
		}catch( Exception e ){
			System.out.println(" File Read Error = " + e );
		}
		
	}


파일 쓰기
	public void FileWrite()
	{
		String time = GetcurrentTime();
		String filename = time + ".txt";
		String output = null;
		
		try{
			File f = new File(filename);			
			FileOutputStream fos = new FileOutputStream(f);
			
			// 파일 출력하기 
			
			fos.close();
			
		}catch ( FileNotFoundException e ){
			e.printStackTrace();
		}catch ( IOException e) {
			e.printStackTrace();
		}
	}


현재 시간 구하기
public String GetcurrentTime()
	{	
		SimpleDateFormat sdf = new SimpleDateFormat("HH_mm_ss");
		Date dTime = new Date();
		String sTime = sdf.format(dTime);
		System.out.println( "currentTime = " + sTime );
		
		return sTime;
	}


* 파일 경로에 대해서
1. Java 에서는 소스코드가 있는 경로에 담아두면 된다.( 안해보고 적는데...)
2. 안드로이드는 함수가 있으니깐...보통 /mmt/sdcard/ 를 붙여주는게 좋긴한데. 
어떤 경우는 /sdcard/ 또는 없어야 하는 경우가 있다. 그냥 그렇다고....

안적은 것보다 못하네요. 



저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노

[eclipse] 북마크 단축키


  관리하는게 너무 귀찮아서 인터넷글을 참조해서 포스팅중!


1. Eclipse의 북마크 Plugin

 help > install new > work with : 


이것도 ADT처럼 추가를 해주도록 하자. 


설치되고나서의 단축키


북마크 :  Ctrl + B

다음 북마크 ; Ctrl + N

지정 북마크 등록 : Alt + 숫자

지정 북마크 이동 : Alt + shift +  숫자



2. 플러그인 미설치시 방법 Click

http://blog.naver.com/PostView.nhn?blogId=cruciancar&logNo=150099689723&redirect=Dlog&widgetTypeCall=true



01. Ctrl + shift + L 을 두번 누른다.

02. 위에 book 라고 누르면 아래와 같이 나온다.


Add Bookmark 설정

Binding : F2

when : Editing java Source


Show View(Bookmarks)

Binding : Shift + F2 (마음대로 해두됨, ubuntu 에서 다른 단축키를 사용중이라서..Ctrl + F2를 안함)

when : Editing java Source


뭐 결과는 안함. 



3. 기타 참조하자.  Click

http://kkamagui.springnote.com/pages/432649


저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노


광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [Android] JNI 에서 조심해야 할 사항! (unsatisfiedlinkerror)

최종수정일 : 2012.01.18

안녕하세요~^^
JNI 를 사용하면서. 정작 5시간동안 하나의 오류를 가지고 삽질 했네요...ㅜㅜㅜㅜㅜ
왕창피.. 말못함.  


by 퓨림노

글을 작성하겠습니다.

일단! 에러가 난 부분!
스샷은 못찍었습니다.

하지만

1. JNI (NDK) 를 이용하여 컴파일!
2. java 에서 native code 를 호출
3. 여기서 에러! ( unsatisfiedlinkerror ) 가 발생하면서 생성한 함수를 찾을 수 없다고 나온다. 

 그래서...문법에도 문제가 없다. 
Java 에서 선언한 곳에서도 문제가 없다.
그리고 space(" ") 으로 인한, 글자 체계와 관련된 문제도 없다. <-- 흔하게 일어남. (Android.mk) 파일에서...

마지막에.... 이전에 있던 파일을 하나씩 추가추가 하면서. 한단계식 밟아가는 과정중에...

이런 문제가 보였다.

기존 코드(Original)

extern "C" {
  JNIEXPORT

void JNICALL Java_vr_knu_ac_kr_FeatureTracking_FindFeatures

  ( JNIEnv *env,

jobject obj,

jint width,

jint height,

jbyteArray yuv,

jintArray rgba,

jintArray xary,

jintArray yary,

jintArray PosX,

jintArray PosY,

jdoubleArray RT )
{
   ....

 



잘못된 코드(my code???? )

  JNIEXPORT

void JNICALL Java_vr_knu_ac_kr_FeatureTracking_FindFeatures

  ( JNIEnv *env,

jobject obj,

jint width,

jint height,

jbyteArray yuv,

jintArray rgba,

jintArray xary,

jintArray yary,

jintArray PosX,

jintArray PosY,

jdoubleArray RT )
{
   ....


 
C코드라고 명시를 해주는 부분이 빠져있다. ...


물론. 소스코드를 수정함에 있어서, synchronized 부분 을 잘못사용하여서 죽은 것도 있지만....
갈길이 멀다 ? 라고 표현하는게 이런 때 쓰는 거군!

뭐 그래도 =+=/ 후딱 끝내자.  
저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노


광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject Easy logging switch between debug/release versions

최종수정일 : 2012.01.17

안녕하세요~^^

by 퓨림노

글을 작성하겠습니다.

Debug version of Config.java:

package com.test;
public class Config {
  public static final boolean D = true;
  public static final boolean V = true;
}

Release version of Config.java:

package com.test;
public class Config {
  public static final boolean D = false;
  public static final boolean V = false;
}

The build script can select one of them to build debug or release version.

In a class that wants to use the switch:

import static com.test.Config.D;

...
   if (D) Log.d(TAG, ...);



Reference
http://www.androidsnippets.com/easy-logging-switch-between-debugrelease-versions  
저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노


광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject : [eclipse] File search 단축키

최종수정일 : 2011.01.16

안녕하세요~^^
eclipse를 사용하면서 파일안에 필요한 단어를 찾는 기능이 기본으로 지정되어 있지 않네요~^^
by 퓨림노

글을 작성하겠습니다.


1. 단축키 등록하는 방법

1. 먼저 eclipse 에서 ctrl + shift + L 키를 누릅니다. ( 2번 누릅니다.)
    한번! 누르게 되면 아래와 같은 화면이 뜹니다. 그럼 같은 버튼을 한번 더 누릅니다.


그럼 아래와 같은 창이 뜹니다.


위쪽에 ' type filter text' 부분에 'File Search' 라고 적어줍니다.


아래와 같이 화면이 뜨죠?

그러면 자신이 편한 단축키를 지정합니다.


전 Ctrl + F 키로 하였습니다.



저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노


광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [Android] AssetManager

최종수정일 : 2012.01.16

안녕하세요~^^
 


by 퓨림노

글을 작성하겠습니다.

1. AssetManager 란?
2. Why?
3. 사용 방법



1. AssetManager 란? 


보기와 같이 assets 폴더에 들어가 있는 파일들을 읽기 위해서 사용한다.
( 파일을 저기에 쓰는 것? 까지는 잘 모르겠다. 하지만. 일단 읽는 것 정리를 해두도록 하자. )


2. Why?
그러고보니 왜 사용하냐?
분명 res/raw 경로에 저장하고 쓰기가 되었던 것 같은데 말이지...
찾아보면 나오겠죠? =ㅅ=.. 공부삼아 해보세요 ㅋ


3. 사용 방법  
URL : 
http://sungho0459.blog.me/40130901885
package vbflash.net;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;

public class AssetsReaderAct extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        AssetManager assetMgr = this.getResources().getAssets();
        try {
        	
        	// input
			InputStream is = assetMgr.open("read.txt");
			long filesize = is.available();
			
			byte[] tempdata = new byte[(int)filesize];
			is.read(tempdata);
			String value = new String(tempdata);
			
			is.close();
			
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
    }
}



소스코드는 위와 같다.

결과 화면은 다음과 같다.
tempdata 에는 int 형으로 글자가 저장되어 있어, String 형으로 변환시켜주었다. 
변환참고 : 
http://pinsil.tistory.com/664 
 - 찾아보니 내 블로그였다. ㄷㄷㄷ



진짜 결과는 아래와 같다.


소스코드 첨부. 간단한거지만!


 
저작자 표시 비영리 동일 조건 변경 허락
Posted by 퓨림노

Android 에서 사용하는 카메라의 Resolution 을 구하는 방법은 다음과 같다.

DisplayMetrics displayMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int pxWidth  = displayMetrics.widthPixels;
int pxHeight = displayMetrics.heightPixels;

사용하는 위치는 MainActivity 에서 사용하도록 한다. 
저작자 표시 비영리 동일 조건 변경 허락

'Android > Tip' 카테고리의 다른 글

[eclipse] File search 단축키  (0) 2012/01/16
[Android] AssetManager  (0) 2012/01/16
Android Camera Resolution  (0) 2011/12/30
Android Tip - Surface view 에 double buffering 하는 방법  (0) 2011/12/27
Android NDK 경로 저장(windows, ubuntu )  (0) 2011/12/20
22  (0) 2011/10/27
Posted by 퓨림노