안드로이드는 아이폰과 달리 기기마다 특성이 다르고 덕분에 어떤 디바이스에서는 잘 되는데 어떤 디바이스에서는 잘안되고 이런 문제가 허다하더군요. 이 문제를 어떻게 해결하지 못하면 앞으로 디바이스 종류는 더 다양해 질텐데 개발자들의 한숨만 늘어날수도 있겠습니다.
아무튼 다양한 디바이스에서 잘 돌아가게 만드는것이 중요한데 개발을 하다보면 한계에 봉착합니다. 무엇이냐면 어떤 디바이스에서는 죽어도 안되는 경우입니다. 아니면 아예 다른 방법으로 접근해야 간신히 문제가 해결되는 독특한 디바이스들이 있습니다. 이경우 어떻게 해야 할까요.
물론 디바이스의 이름을 알아내서 이때만 예외처리를 하는 방법도 있겠습니다. 비참하지만 능력 부족의 한계ㅠㅠ 아무튼 이런 경우에 디바이스에서 어떤 정보를 가져올 수 있는지 확인해 보았습니다. Build라는 클래스의 정보들을 읽어보시면 원하는 정보를 얻어올 수 있습니다.
[code]package kr.pe.theeye;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
public class ModelNameTest extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d(“ModelNameTest”, “BOARD: ” + Build.BOARD);
Log.d(“ModelNameTest”, “BRAND: ” + Build.BRAND);
Log.d(“ModelNameTest”, “CPU_ABI: ” + Build.CPU_ABI);
Log.d(“ModelNameTest”, “DEVICE: ” + Build.DEVICE);
Log.d(“ModelNameTest”, “DISPLAY: ” + Build.DISPLAY);
Log.d(“ModelNameTest”, “FINGERPRINT: ” + Build.FINGERPRINT);
Log.d(“ModelNameTest”, “HOST: ” + Build.HOST);
Log.d(“ModelNameTest”, “ID: ” + Build.ID);
Log.d(“ModelNameTest”, “MANUFACTURER: ” + Build.MANUFACTURER);
Log.d(“ModelNameTest”, “MODEL: ” + Build.MODEL);
Log.d(“ModelNameTest”, “PRODUCT: ” + Build.PRODUCT);
Log.d(“ModelNameTest”, “TAGS: ” + Build.TAGS);
Log.d(“ModelNameTest”, “TIME: ” + Build.TIME);
Log.d(“ModelNameTest”, “TYPE: ” + Build.TYPE);
Log.d(“ModelNameTest”, “USER: ” + Build.USER);
}
}[/code]
위는 시뮬레이터에서 실행한 결과입니다. 시뮬레이터의 정보들을 확인해 보실 수 있습니다.
위는 디자이어에서 실행해본 결과입니다. 곳곳에서 보이는 bravo를 보니 아무래도 디자이어의 코드명은 브라보가 아니었을까 하는 생각이 드는군요.