Android에서 수동으로 MediaScan 하기Android에서 수동으로 MediaScan 하기

Posted at 2011.03.20 21:42 | Posted in About Programing/05. Android
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
				Uri.parse("file://" 
			     + Environment.getExternalStorageDirectory())));  
저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Android에서 기기 계정 정보 가져오기Android에서 기기 계정 정보 가져오기

Posted at 2011.03.07 21:55 | Posted in About Programing/05. Android
AndroidManifest.xml 에서 Permission 설정

<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>

Source

Account[] accounts = AccountManager.get(this).getAccounts();
저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Android 내장 메모리의 사진 정보 가져오기Android 내장 메모리의 사진 정보 가져오기

Posted at 2011.02.28 23:52 | Posted in About Programing/05. Android
AndroidManifest.xml 에서 Permission 설정




Main.java

package com.eg.giver;

import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore.Images;

public class Main extends Activity
{
	ArrayList mTitleArray;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mTitleArray = new ArrayList();
        
        getImages ();
    }
    
    public void getImages ()
    {
    	Cursor mManagedCursor;
    	
    	mManagedCursor = getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI , null, null, null, null) ;
    	
    	if(mManagedCursor != null)
    	{
    		mManagedCursor.moveToFirst();
    		
    		int nSize = mManagedCursor.getColumnCount();
    		
    		while (true)
    		{
    			String bucket_display_name =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.BUCKET_DISPLAY_NAME)); // 버킷의 이름
    			String bucket_id =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.BUCKET_ID)); // 버킷 ID
    			String date_taken =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.DATE_TAKEN)); // 촬영날짜. 1/1000초 단위
    			String description =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.DESCRIPTION)); // Image에 대한 설명
    			String is_private =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.IS_PRIVATE)); // 공개 여부
    			String latitude = 
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.LATITUDE)); // 위도
    			String longitude =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.LONGITUDE)); // 경도
    			String mini_thumb_magic =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.MINI_THUMB_MAGIC)); // 작은 썸네일
    			String orientation = 
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.ORIENTATION)); // 사진의 방향. 0, 90, 180, 270
    			String picasa_id =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.PICASA_ID)); // 피카사에서 매기는 ID
    			String id =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns._ID)); // 레코드의 PK
    			String data = 
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.DATA)); // 데이터 스트림. 파일의 경로
    			String title =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.TITLE)); // 제목
    			String size = 
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.SIZE)); // 파일의 크기
    			String mime_type =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.MIME_TYPE)); // 마임 타입
    			String display_name =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.DISPLAY_NAME)); // 파일 표시명
    			String date_modified =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(Images.ImageColumns.DATE_MODIFIED)); // 최후 갱신 날짜. 초단위
    			String date_added =
    				mManagedCursor.getString(
    						mManagedCursor.getColumnIndex(
    								Images.ImageColumns.DATE_ADDED)); // 추가 날짜. 초단위
    			
    			mTitleArray.add(title);
    			
    			if (mManagedCursor.isLast())
    			{
    				break;
    			}
    			else
    			{
    				mManagedCursor.moveToNext();
    			}
    		}
    	}
    	
    }
}
저작자 표시 비영리 변경 금지
신고
  1. collin
    좋은 글 감사드립니다. 덕분에 고민하던 문제가 풀리기 시작했네요. ^^ 본문에 코드 중 SyntaxHighlighter 오류인지 ArrayList<string> 와 같이 String 이 string이라고 나와 있네요.
    • 2011.09.21 18:34 신고 [Edit/Del]
      도움이 되셨다니 다행입니다^^
      말씀하신 오타는 저도 수정하려고 노력 해보았습니다만,
      말씀하신데로 SyntaxHighlighter 오류인지 수정이 되질 않네요ㅠ
  2. 레브네인
    안녕하세요. 안드로이드 공부하다가 우연히 들리게 되었습니다.
    아직 초보라서 이해가 가지않는 부분이 많이 있는데.. 그중에서도 위의 소스코드중에
    가장 마지막에 </string></string> 이부분은 왜 넣는건가요?
  3. 에레시아
    정말 좋은정보 감사합니다^^;;
    한가지만 여쭤봐도 될까요? ㅎㅎ;
    값중에 해상도 값이 없는듯한데.. 혹시 알수 있을까요? ㅎㅎ;
  4. 솽솽
    도와줘요 숙신!!
    오랜만에 검색하다보니 여기로 들어옴 ㅠㅠ
    살려줘요 코딩못하겠음...ㅠㅠㅠ

  5. 초보
    혹시 xml 쪽에선 건들게 없는건가요??

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

시연 동영상시연 동영상

Posted at 2011.01.09 21:04 | Posted in Project/Android기반 자녀 지킴이


 

apk 를 배포한다거나, 정식 서비스 계획은 없습니다.

영화 [악마를 보았다]를 보고 난 뒤,
꼭 필요한 프로그램이 아닐까 해서 개발하였습니다.

하지만, 악용될 경우 사생활 침해의 우려가 매우 높기 때문에
개발 했다는 것에 만족하겠습니다.

저작자 표시 비영리 변경 금지
신고

'Project > Android기반 자녀 지킴이' 카테고리의 다른 글

대구대학교 App 공모전 시연용 동영상  (2) 2011.01.13
시연 동영상  (0) 2011.01.09

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Android system 구축 및 설계 필기Android system 구축 및 설계 필기

Posted at 2010.11.22 15:43 | Posted in About Programing/05. Android
일시 : 2010년 11월 21일 9시 ~ 18시
강사 : 이우성


□ Android platform
- OS 기능
- Middleware 기능 : Database, Graphic library 등
- Application framework : class 환경, 실행 환경 등

총 4개 계층 중 제일 아래 Linux kernel이 있음.

□ Linux kernel이 제공하는 기능
- Memory 관리
- Process 생성 / 소멸 / 스케쥴링
- 전원 관리 : Android 용에서 추가.
- Application 강제 종료

□ Java virtual machine


- *.class가 Load되면 Memory에 탑재 된다.
- I/O 관련 부분은 Native library에 도움을 받아야 한다.
- 실행 모듈에선 Native OS용 Code가 나온다.
- Google에서는 License를 피하기 위해 Java virtual machine이랑 조금 다른 Dalvik virtualmachine을 Android에 탑재 하였다.
- Dalvik virtual machine은 Instance type이다. 즉, Application마다 하나씩 생성 된다.

□ Application 생성 순서
Linux process 생성 → 그 안에 Dalvik virtual machine 생성 → 그 안에 Application 생성

□ Java version
- EE : Server에서 주로 사용
- SE : PC에서 사용. Android의 기반이 된다.
- ME : Embedded에서 사용. License가 필요하다. Android가 무료로 공개되고 나서 입지를 잃었다.


□ Application framework : Application이 동작 할 수 있는 환경.

□ Activity manager : Application 하나가 실행되는 것을 관리.

□ Application의 종류
- Key application : 이미 내장되어 있는 Application. Android나 제조업체에서 제공.임의 삭제 불가.
- Download application : 사용자가 설치하는 Application. 2.2 부터는 외부 Memory에 저장 가능.

□ Application 개발 형태
- Java 기반 Application : Android에서 제공하는 Java 기능만 사용하여 개발.
- Java 기반 C 함수 사용
- Linux system program : C언어 사용
- Android platform porting

□ Android booting 과정
Bootloader에 의해서 Linux kernel이 먼저 호출 → init 이라는 Linux 최상위 Process 생성 → Zygote process 생성(Android의 부모 Process)

□ Android Application 구조
- 동적 구조 : Program 동적 수행 code.*.java → java compiler → *.class → Dalvik에서 지원하지 않음.Android SDK에서 classes.dex로 변환.
- 정적 구조(Resource) : 고정된 형태의 값. *.xml화면 구성 정보. Image. *.png 권장.Resource compiler 사용.각종 값(문자열, 색상, 크기, 스타일 정보)
- Application 정보 : Android Manifest.xml
□ Application 구성 요소
- Activity : 사용자 화면 구성 및 Event 처리.
- Service : Background 상태에서 처리.
- Content provider : Data 공유를 위한 Interface.
- Broadcast receiver : System에서 전달되는 Message 수신.
- Component : Activity, Service, Broadcast receiver
- Intent : Message object. Component간 Message 전달용.


□ Activity 상태
- 활성화 상태 : 화면에 보여지면서 사용자 Message 수신 가능 상태.
- 일시정지 상태 : 화면은 보이는데 Event 수신이 안되는 상태.
- 정지 상태


□ Message 종류
1. Component name
2. Action
3. Category
4. Data / Mime type
5. Extra
6. Flag

□ Intent 사용 방법
- 명시적 Intent 사용 : Component name
- 암시적 Intent 사용 : Action, Category, Data/Mime type다른 Activity가 가진 요소를 활용 한다.

저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

RelativeLayoutRelativeLayout

Posted at 2010.11.09 03:14 | Posted in About Programing/05. Android




저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Android에서 ImageButtonAndroid에서 ImageButton

Posted at 2010.11.09 03:11 | Posted in About Programing/05. Android
.xml

 <ImageButton
    android:id = "@+id/profile_icon"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:src = "@drawable/profile_icon"
    android:text = "">
</ImageButton>
저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Android Activity 추가하기Android Activity 추가하기

Posted at 2010.11.08 23:59 | Posted in About Programing/05. Android
1. 메니페스트 파일에 액티비티 등록하기


 안드로이드에서 액티비티를 호출하기 위해서는 먼저 메니페스트 파일에 액티비티가 등록되어 있어야 합니다. 메니페스트 파일에 액티비티를 등록해주기 위해, 먼저 메니페스트 파일(AndroidManifest.xml) 파일을 연 후, Application 탭을 클릭합니다.


 여러가지 속성을 설정할 수 있는 화면들과 함께 어플리케이션의 여러 구성요소들을 등록할 수 있는 Application Nodes 화면이 화면 좌측 하단에 있습니다. 이곳에서 액티비티 뿐만 아니라 다른 액티비티 구성요소 (서비스, 컨텐트 프로바이더 등)도 추가해줄 수 있습니다.

 액티비티를 추가하기 위해 Application Nodes 부분의 Add... 버튼을 클릭합니다.



 Add.. 화면을 클릭하면 다음과 같은 대화상자가 나타나는데, 이곳에서 "Activity"를 클릭합니다.
 "OK" 버튼을 클릭한 후, 추가된 Activity를 선택한 후 오른쪽의 Attributes 화면을 보면 다음과 같은 화면이 보일 것입니다.

2. 액티비티 소스 코드 만들기

 메니페스트 파일에 액티비티를 선언하였으니, 이 액티비티의 실질적인 동작을 구현할 자바 소스 코드를 만들어야 합니다.
파란색으로 되어있는 Name* 을 클릭하여 새 클래스를 만들어줍시다.


 위와 같은 대화상자가 뜨게 될 것입니다. 다른 것은 특별히 건드릴 필요가 없고, 클래스의 이름 (일반적으로 액티비티의 이름과일하게 설정합니다) 을 입력합니다. 이름을 입력했으면, Finish 버튼을 누릅시다.

저작자 표시 비영리 변경 금지
신고

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

티스토리 툴바