Android 입문자를 위한 Tutorial - 5. ArrayList

Mobile Programming/Android 2010. 11. 4. 14:14

arrayList를 확장하여 이용하는 뷰가 참 많이 있다.

먼저 가장 많이 사용하는 "리스트뷰", 말 그대로 여러정보를 리스트를 뿌려주듯이 뿌려줄 수 있다.

adapter를 이용하기 위해서 먼저 ArrayList를 만들고 ,

ArrayList Items;
ArrayAdapter Adapter;
ListView list;

	Items = new ArrayList();
	Items.add("First");
	Items.add("Second");
	Items.add("Third");



Array Adapter를 만들어줘야한다.
Adapter = new ArrayAdapter(this, android.R.layout.
				simple_list_item_multiple_choice, Items);

그 뒤에 listview에 연결시켜주면 된다.
list.setAdapter(Adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
.


다음으로 스피너는
팝업창을 통해서 리스트 뷰를 띄워주는 형태라고 생각하면 될 것 같다.

다음은 스피너를 이용하는 소스이다.
package geng.mm.jnu;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RatingBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class fruitrating extends Activity {
    /** Called when the activity is first created. */
		ArrayAdapter adspin;
		RatingBar mRating;
		TextView mRateText;
		String fruit;
		float rate;
		//채워넣을 곳//
		public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fruitrating);

		mRating = (RatingBar)findViewById(R.id.ratingbar);
		mRateText = (TextView)findViewById(R.id.ratetext);

		Spinner spin = (Spinner)findViewById(R.id.myspinner);
		spin.setPrompt("과일을 고르세요.");

		adspin = ArrayAdapter.createFromResource(this, R.array.fruits, 
		android.R.layout.simple_spinner_item);
		adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spin.setAdapter(adspin);

		spin.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView parent, View view, int position, long id) {
				//채워넣을 곳//
				fruit = (String) adspin.getItem(position);
			}
			public void onNothingSelected(AdapterView parent) {
			}
		});

		mRating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
			public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
				mRateText.setText("Now Rate : " + rating);
				rate = rating;
				//채워넣을 곳//
				String tmp ;
				if(rate<1){
					tmp = "나빠";
				}else if(rate < 2.5)
					tmp = "괜찮아";
				else if(rate<3.9)
					tmp = "좋아!";
				else 
					tmp = "완전좋아~!!";
				Toast.makeText(fruitrating.this, fruit + "는 "+  tmp , Toast.LENGTH_SHORT).show();

			}
		});
	}
}
;

<string-array name="fruits">
<item>사과</item>
<item>감</item>
</string-array>
와 같이 xml에 넣어주었다.

rating chanaged 메서드와 , itemselected 메서드로 변화를 감지해서 클릭된 스피너의 아이템을 알아내고 그에 따라 토스트를 출력한다.


직접 개발한 프로그램 - 친구 위치 찾기

Developed Program/Android 2010. 10. 23. 16:40


20010 년도 5월쯤 프로젝트
개발기간 - 1~3 주..?
사용 플랫폼 - Android OS 1.5
사용 단말기 - Andro One (French Edition)



Android를 처음 접한건 연구실 처음 들어왔을 때니까,
2년쯤 전인데 그 긴 시간동안 무슨 목적의식을 갖고 만든 프로그램은 없었네요.
(Android 쬐끔 만지다가 와인라벨과 메뉴판 인식에 전념을 다하게 된 것도 그 이유 중 하나라고 생각합니다만)
먼저 안드로이드 공부를 다 끝내고 프로그램 기획을 하자 !
그정도 생각이었을거라 봅니다 .ㅎ

결국 뭔가 프로그램 다운건 이것 뿐이네요 .

프로그램은 .. 간단합니다.
요새 논란이 되고 있는 "오빠믿지 ? " 어플과 목적이 같습니다.
교수님이 처음 제안서를 받고 이런 위치 추적 문제가 되지 않겠냐고 우려하시던 모습이 떠오르네요..



이 어플은 상기 그림을 보시면 아시겠지만 Java로 구현된 서버 프로그램이 제 컴퓨터에 돌고 있어야 구동가능합니다.
고로 마켓에 올린다거나하는 번거로운 일은.. 하지 않았습니다.

프로그램의 구조는 다음과 같습니다.


서버, 앱 모두 스레드가 다중이라는 점에서 유발되는 Handling,
서버와의 통신을 담당하는 액티비티를 하나만 만들었기 때문에
( 한번의 Connection의 Close , Open을 괜히 복수로 하고 싶지 않았습니다. 연결이 불안정 할테니까요.. )
각 Activity 간의 통신으로 여러 정보를 주고 받아야 되는 점에서 유발되는 PutExtra, BR 등이 조금 번거롭게 만들긴 했죠.

내 위치는 햄토리로, 친구 위치는 햄토리 여자친구로 나왔는데,
역시 제가 마켓에 출시할 생각이 전혀없었기 때문에 문제 없었습니다.

주요기능은

1. 내 주소록 DB에 Access, 친구목록을 가져옴
2. 친구와 대화 가능
3. 친구와 통화 가능
4. 친구와 문자 가능
5. 귀여운 햄토리로 내 위치 확인
6. 귀여운 햄토리 여자친구로 친구 위치 확인


다음은 구동 이미지입니다.


핸드폰을 들고있는 사람(햄토리)는 움직이지 않고 햄토리 여자친구의 이동을 확인 할 수 있습니다.


후에 동영상 첨부 합니다...

'Developed Program > Android' 카테고리의 다른 글

이거슨 심심풀이 프로젝트 ? - Geng's Minihome  (2) 2010.11.12

넥서스원 , 2.2.1 업데이트

도움될지도? IT 정보 2010. 10. 23. 15:49

다른 안드로이드 폰들이 이제 프로요(2.2)로 업데이트가 됐을때!!
넥서스원은 2.2.1 이다 !!




넥서스원 유저분들이 가장 자부심을 가지는 레퍼런스 폰의 최대 강점, 그 어느 안드로이드 단말기보다 빠른 업데이트!

KT쪽에서 구글에서 공급한 2.2.1을 막았다하여 유저 여러분들의 불만이 많았죠.
준비할게 있었다나 ?

10월 22일자로 OTA가 가능하게 되었습니다.
관련 기사 ->  http://news.etomato.com/news/etomato_news_read.asp?no=117457

OTA( 기존 방송이 송출중단되거나 신규 방송이 생길때에 수신기 회사에서 변경된 채널자료등을 위성을 통해 자동으로 업그레이드 해주는 기능입니다. )

[출처] OTA란 무엇인가?|작성자 마틴신



사실 저는 SKT에서 KT전용 넥서스원을 사용하는 유저라 뭐 KT에 왈가왈부할 입장도 아니고 ,
OTA 업데이트를 기대한 입장도 아니었는데 오늘 아침에 Notification 으로 "시스템 업데이트가 있습니다" 가 있더군요 ㅎ
냉큼 실행했죠.

넥원이 유저분들이 바라는 업데이트 주 내용은

1. MAC 주소가 00으로 시작하지 않는 넥서스원의 경우 절전모드(스크린이 꺼짐)에 들어가면
와이파이 연결도 함께 끊기는 버그 해결
본인의 맥주소 확인  - 설정 > 휴대전화 정보 > 상태 > Wi-Fi MAC 주소

이 버그때문에 KT 에서 보상차원으로 데이터 1G 무료 제공을 했었죠.
저는 SKT라 물론 혜택을 받지 못했습니다만.........................

2. 넥서스원의 터치오류 해결
넥서스원 가끔 터치가 엉뚱한데로 먹는 버그가 있습니다.
절전모드로 들어갔다가 다시 켜면 대부분 풀립니다만.

정도 였을까요 ?

다음은 KT에서 공개한 2.2.1의 업데이트 내용입니다.

다음은 hTC로부터 확인한 업그레이드 상세 내용입니다.

1. 기존 해외 롬 (os 2.2.1) (약 4M)

2. 한글 키보드 외 로컬라이징 작업(약 5M)


- 한글 키보드
- 비상전화 설정
- 카메라 설정음 처리 등

3. 퀄컴QSD8250칩 패치 적용 (약 12M)

- Buffer overflow vulnerability in processing of GSM L2 messages
- Buffer overflow vulnerability in PS call accept processing
- Buffer overflow vulnerability in processing Attach Accept message
- Buffer overflow vulnerability in processing Emergency Num List IE in Registration Accept Message


Wi - Fi 버그 수정

http://smartblog.show.co.kr/321


터치 오류는 다음 패치에 적용할 예정이라합니다.
wifi 버그는 완벽히 수정되었다고 하는데 몇몇 유저분들 포털에서 보면 가끔씩 또 끊기곤 한다고합니다.
(그래도 대부분은 훨씬 나아졌다고 합니다. 저는 아직 끊기는 현상을 발견하지 못했구요._)

3의 퀄컴칩 패치 덕분인지,

1. 갤러리 딜레이 감소
2. 웹서핑 속도 증가
3. SD 카드 로딩 속도 개선

등이 느껴집니다.!

또 Youtube 어플이 다운로드 되지 않았는데 이제 된다고 하죠 !

0.0.1 업데이트 치고는 많은 점들이 개선된거 같습니다.

아직까지 notification이 뜨지 않은 분은

전화걸기 창에서

*#*#2432546#*#*

명령어를 치면 시스템 확인을 한다고 합니다.
이 점은 제가 직접 실행해 보지 않았기 때문에 장담은 못드리겠군요.