안드로이드 MIME타입 떄문에 요즘 머리아픕니다. ㅠㅠ  공부해야쥐 ㅠㅠ

 

안드로이드 확장자로 mime 타입 추출하는 방법

        

          MimeTypeMap mtm = MimeTypeMap.getSingleton(); // mime type 추출용

      // 파일의 이름을 제외한 확장자명 추출
          String fileExtension = str.substring(str.lastIndexOf(".") + 1, str.length()).toLowerCase();           

     //확장자를 통해 String 형태로 Mime타입 추출
          String mimeType = mtm.getMimeTypeFromExtension(fileExtension);

 

이상입니다.

 

Screen Density, DPI

 

Density 

DPI 

Layout 경로 

Drawable 경로 

 Low

120

/res/layout-ldpi

/res/drawable-ldpi

 Medium

 160

 /res/layout-mdpi

/res/drawable-mdpi

 High

 240

 /res/layout-hdpi

/res/drawable-hdpi

 Extra high

 320

 /res/layout-xhdpi

/res/drawable-xldpi

 

1. 실행아이콘 크기

해상도(Screen density) 

크기(픽셀) 

Low 

36 x 36

 Medium

 48 x 48

 High

 72 x 72

 Extra high

 96 x 96

 

2. 액션바 아이콘 크기

 

 

Low

18 x 18

Medium

24 x 24

High

36 x 36

Extra high

48 x 48

 

 

3. 상태바 아이콘 크기

해상도(Screen density)

크기(픽셀)

Low

18 x 18

Medium

24 x 24

High

36 x 36

Extra high

48 x 48

 

4. 대화상자 아이콘 크기

해상도(Screen density)

크기(픽셀)

Low

18 x 18

Medium

24 x 24

High

36 x 36

Extra high

 

5. 리스트뷰 아이콘 크기

해상도(Screen density)

크기(픽셀)

Low

18 x 18

Medium

24 x 24

High

36 x 36

Extra high

 

6. 탭아이콘 크기

해상도(Screen density)

크기(픽셀)

Low

24 x 24

Medium

32 x 32

High

48 x 48

Extra high

 

그 외 고해상도 앱인 경우 구글마켓 등록 시 고해상도 아이콘을 추가 해야 함 : 512 x 512 픽셀

참고사이트 : http://www.creativefreedom.co.uk/icon-designers-blog/android-app-icon-sizes/

 

안드로이드 갤러리(S메모) 공유 받는방법입니다.

 

개발을 하다보니 S메모의 내용을 받으려고 헤메고 다녀서 정리 해둡니다.

 

우선 공유를 받게 되면 기본적으로 URI 형태로 받을수 있습니다.

자 그럼 손을 대야하는곳은

AndroidManifest.xml 와 실제 구동할 Activity 입니다.

 

우선 AndroidManifest.xml입니다

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hjm.shear.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>

            <intent-filter

                  android:label ="원하는이름">
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>            

         </activity>
    </application>

</manifest>

 

빨간 부분이 추가되어야 합니다.

 

다음은 Activity 부분입니다.

 

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//실제액티비티에서 인텐트를 받습니다.

 

         Intent intent = getIntent();

        Bundle extras = intent.getExtras();

//저갔은 경우는 그냥 이미지뷰에 넣었습니다. 참고로 예외처리 안했습니다. ㅋㅋ

 

        ImageView imageview = (ImageView)findViewById(R.id.imgv);

        Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM); //이게 URI입니다.

//이것이 필요한거구요  


        if(!uri.equals("")){
         String[] proj = { MediaStore.Images.Media.DATA };
           Cursor cursor = managedQuery(uri, proj, null, null, null);
           int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
           cursor.moveToFirst();
         String  path = cursor.getString(index);
           path = path.substring(5);
//path 이게 URI를 갖고 파일경로 알아냅니다. 

 

            imageview.setImageURI(uri); 
        }
       
    }   
}