위의 이미지는 현재 작동중인 앱을 캡쳐한 이미지입니다.

보시는 것과 같이 기본적으로 2가지 형태로 대기자 정보가 표시됩니다.

1. 전체 열람실 대기자
2. 열람실별 대기자
3. 청소년, 성인 대기자 (작업 예정) 
4. 기타

도서관을 차례대로 하나씩 늘려 갈 예정입니다.
특별한 형태의 폼을 가지고 있는 도서관은 늦어 질수 밖에 없습니다.
되도록이면 많은 도서관이 함께 사용하는 폼을 먼저 작업하려 합니다.

이용시간, 휴관일 정보는 데이터는 들어 있지만... 자료검증을 다시 해야 하는가... 에 대한 고민에 빠져 있습니다.
결정나는데로 바로 작업 하도록 하겠습니다. 
Posted by 초프(초보 프로그래머)
Programming/Android2011.09.28 17:22
    if (!strcmp(basename(argv[0]), "ueventd"))
        return ueventd_main(argc, argv);

 init.c 의 main 함수를 보면 ueventd_main 을 실행하는 부분이 있습니다. 책에서도 먼저 실행된다고 되어 있습니다.
하지만 아무리 생각해 봐도 argv[0] 은 파일명인데... 어떻게 이게 다른 파일인 "ueventd" 가 될수 있는 걸까요?

파일명이 차이가 나는 이유는 ueventd가 init의 심볼릭링크라서 그렇다는 군요.

그리고 init보다 ueventd가 먼저 실행되는 이유는 이 코드가 아닌 전혀 다른 곳에 있었습니다.
init.rc 파일을 보면 다음과 같이 있습니다.

on early-init
        start ueventd
.....

init이 시작될때 ueventd를 실행하라고 되어 있습니다. 그래서 먼저 실행되는 것이라고 합니다.

Posted by 초프(초보 프로그래머)
Programming/Android2011.09.02 11:50
정확하게는 아니지만... 다른 분들의 의견과 저의 의견을 종합하여 내린 결론! 

onItemClickListener 은 말 그대로 터치하여 클릭되었을 경우 발생하는 이벤트입니다. down -> up 이 되어야 발생합니다.

onItemSelectedListener 은 방향키나 트랙볼등으로 이동하였을 경우 포커스를 가지게 될때 발생하는 이벤트입니다.
Posted by 초프(초보 프로그래머)
Programming/Android2011.08.31 10:56

제어판 > 시스템 > 고급 > 환경변수 > 시스템변수

변수 이름 : ANDROID_SDK_HOME
변수 값 : D:\android-sdk-windows

이클립스가 켜 있는 상태라면 종료하고 다시 실행하셔야 합니다.



Posted by 초프(초보 프로그래머)
Programming/Android2011.08.16 10:30
안드로이드 애뮬레이터 실행시 발생하는 오류입니다.
경로 중간에 빈공간이나 한글등이 들어가면 생기는 오류입니다.
다시 설치하는 방법이 있으나 링크로 해결하는 방법이 있습니다.

C:>MKLINK /j C:\Android "C:\Program Files\Android\android-sdk\"


참고 사이트
http://www.androidpub.com/1644488
Posted by 초프(초보 프로그래머)
Programming/Android2011.02.04 16:15
코드로 TextView의 글자 크기를 변경하였습니다.
테스트는 HVGA 에뮬레이터와 안드로원 이었습니다.
글자 크기를 +1, -1 적용하는데 문제 없었습니다.
하지만 오류 보고 계속 왔죠. 글자 크기 조정이 제대로 안된다고..
특히 -1은 작아지는 것이 아니라 더 커진다고..
확인해 보니 WVGA에서는 계산한데로 제대로 적용되지 않고 있었습니다.
어떻게 해보아도 제대로 되지 않았는데 찾아 보니 setTextSize 는 2개의 메소드가 있더군요.
기본적으로 쓰는 것을 말고 단위를 선택하는 메소드가 있습니다.


TypedValue 값을 이용하여 단위를 정할 수 있습니다.


TypedValue.COMPLEX_UNIT_PX 가 pixel 단위를 나타냅니다.

그러므로 우리가 코드에서 크기를 변경할때 pixel 단위를 사용한다면 이것을 사용하여야죠.

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

Posted by 초프(초보 프로그래머)
Project2011.01.25 14:15
많은 버그로 인해서 다운그레이드 작업을 진행하였습니다.

1.0.0 버전에 있던 설정을 가져와 적용하였습니다.

1.1.0 에 맞게 수정되었습니다.

글을 오래 누르면 나오는 메뉴와 메뉴 버튼을 누르면 나오는 메뉴를 통합하였습니다.

인코딩을 선택할때 예전보다 더 많은 글이 나오도록 하였습니다.






Posted by 초프(초보 프로그래머)
Programming/Android2011.01.25 12:50
안드로원을 테스트폰으로 사용하고 있습니다.

안드로원이 2.2로 업데이트된 이후로 smoothScrollTo 가 적용되지 않습니다.

이유는 알 수 없으나 검색을 통해 해결 방법을 찾아 냈습니다.

	scrollView.post(new Runnable(){
				public void run() {
	            	scrollView.scrollTo(x, y);
				}
            });

Posted by 초프(초보 프로그래머)
Programming/Android2011.01.21 02:04
onPrepareDialogBuilder 는 Dialog 가 보여지기 전에 실행되는 메소드 입니다.

DialogPreference 에 존재하고 있으며 AlertDialog.Builder 를 만들고 설정 후에 onPrepareDialogBuilder로 넘겨 줍니다.

이 받은 Builder는 아마도... 그냥 객체만 생성된 것 같습니다. 메소드를 비워두면 아무것도 안 뜨는 것을 알 수 있습니다.



	

package android.test;

import android.app.AlertDialog;
import android.content.Context;
import android.preference.ListPreference;
import android.util.AttributeSet;

public class ColorListPreference extends ListPreference {

	public ColorListPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		
	}
}



넘겨 받은 Builder 에는 XML에서 지정한 제목만 들어갔네요. 아... 그런데 버튼이.. 원래 이런 스타일이 아니었죠!

버튼이 하나였던것 같은데.... 이걸 직접 수정할 수 있지만...

부모의 메소드를 실행해 보겠습니다.

	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		super.onPrepareDialogBuilder(builder);
	}

어라 이게 원했던 스타일이죠! 아... 그런데 리스트에 있는 값들이 맘에 안드네요....

원래 부터 저걸 바꾸기로 한거였는데... 이제 다시 원점이군요.

상위 메소드를 실행해서 저런 스타일을 가지는 builder가 만들어 졌습니다. 그럼 이제 그 builder 로 리스트의 값만 바꿔주면 끝입니다!!!



	
		
	
	
	

import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.preference.ListPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ColorListPreference extends ListPreference {

	public ColorListPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		super.onPrepareDialogBuilder(builder);
		builder.setAdapter(new ColorListAdapter(getContext(),R.layout.color_list_preference_row,getEntriesList()), new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				Log.i("yViewer","click item : "+which);
				setValue(getEntryValues()[which].toString());
				dialog.dismiss();
			}
		});
	}
	
	private ArrayList getEntriesList(){
		ArrayList list = new ArrayList();
		CharSequence[] array = getEntries();
		
		for(CharSequence name : array){
			list.add(name.toString());
		}
		
		return list;
	}
	
	private class ColorListAdapter extends ArrayAdapter{
		private ColorString rgb;
		
		public ColorListAdapter(Context context, int resource, List objects) {
			super(context, resource, objects);
			rgb = new ColorString();
		}
		
		public View getView(int position, View view, ViewGroup parent){
			LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			String name = (String) ColorListPreference.this.getEntries()[position];
			String value = (String) ColorListPreference.this.getEntryValues()[position];
			
			view = vi.inflate(R.layout.color_list_preference_row, null);
			
			View colorView = view.findViewById(R.id.color);
			TextView nameView = (TextView) view.findViewById(R.id.name);
			Log.i("yViewer",value);
			colorView.setBackgroundColor(rgb.toRGB(value));
			nameView.setText(name);
			nameView.setTextColor(rgb.toRGB(value));
			
			return view;
		}
	}
}


오호!! 원하는데로 나오는 군요!! 

그런데... 이게 뭔가요.... 클릭해도 저장이 안되네요? 값 저장을 처리해야 할까요?

음... 기본으로 되어 있는데 괜히 건드리고 싶지는 않군요

검색을 통해서 알아보니 체크가 되는 리스트뷰 항목을 만들려면 각 항목의 최상위 뷰가 Clickable을 구현해야 한다고 합니다.

결국 새로운 뷰를 하나 만들어야 한다고 합니다.

늦었으니 그건 다음에... ^^;
Posted by 초프(초보 프로그래머)
Programming/Android2011.01.21 00:49
안드로이드 뷰에서 색상을 지정하려면 drawable, resource, rgb 값이어야 합니다. 

일단 drawable, resource는 아닙니다. 그럼 int형인 rgb값을 지정해야 합니다.

int형 rgb값은 Color.rgb(int r, int g, int b) 로 얻을 수 있습니다. 

r,g,b 값을 따로따로 int형으로 줘야 합니다. 우리가 가지고 있는 16진수 문자열인데.... 

Integer.parseInt()로 변환도 안되고... 직접 만들어야 겠습니다!

import java.util.Hashtable;

import android.graphics.Color;

public class ColorString {
	private Hashtable hexTable = null;
	
	public ColorString(){
		hexTable = new Hashtable();
		hexTable.put('0', 0);
		hexTable.put('1', 1);
		hexTable.put('2', 2);
		hexTable.put('3', 3);
		hexTable.put('4', 4);
		hexTable.put('5', 5);
		hexTable.put('6', 6);
		hexTable.put('7', 7);
		hexTable.put('8', 8);
		hexTable.put('9', 9);
		hexTable.put('A', 10);
		hexTable.put('B', 11);
		hexTable.put('C', 12);
		hexTable.put('D', 13);
		hexTable.put('E', 14);
		hexTable.put('F', 15);
	}
	
	public int toRGB(String color){
		String strR = color.substring(1, 3);
		String strG = color.substring(3, 5);
		String strB = color.substring(5);
		
		return Color.rgb(getHexValue(strR), getHexValue(strG), getHexValue(strB));
	}
	
	private int getHexValue(String num){
		return hexTable.get(num.charAt(0)) * 15 + hexTable.get(num.charAt(1)); 
	}
}
hashtable을 안 써도 되긴 하지만.... 그리고 static이 더 편할 수도 있지만....

그냥 만들다 보니 이렇게 됐네요 ㅋ
Posted by 초프(초보 프로그래머)