레이블이 orientation인 게시물을 표시합니다. 모든 게시물 표시
레이블이 orientation인 게시물을 표시합니다. 모든 게시물 표시

2014년 2월 18일 화요일

ODROID-U2/U3/X/X2(Exynos4412) update

first recovery.
ODROID-U2/U3
http://dn.odroid.com/4412/Android/4.1.2_Feb-12-2014/ODROID-U/
ODROID-X2
http://dn.odroid.com/4412/Android/4.1.2_Feb-12-2014/ODROID-X2/
ODROID-X
http://dn.odroid.com/4412/Android/4.1.2_Feb-12-2014/ODROID-X/


[   ]emmc_self_installer.img.zip12-Feb-2014 13:15146M
[   ]emmc_self_installer.img.zip.md5sum12-Feb-2014 13:1562
[   ]sd_self_installer.img.zip12-Feb-2014 13:15146M
[   ]sd_self_installer.img.zip.md5sum12-Feb-2014 13:1560

Windows users


Linux users

$ unzip sd[emmc]_self_installer.img.zip
$ sudo fdisk -l
$ sudo dd if=./sd[emmc]_self_installer.img of=/dev/sdX

Update complete.
Run ODROID Updater.

ODROID-U2/U3
Input URL http://dn.odroid.com/4412/Android/4.1.2_Feb-19-2014/ODROID-U/update.zip

ODROID-X
Input URL http://dn.odroid.com/4412/Android/4.1.2_Feb-19-2014/ODROID-X/update.zip

ODROID-X2
Input URL http://dn.odroid.com/4412/Android/4.1.2_Feb-19-2014/ODROID-X2/update.zip



If you run flappy bird in Landscape mode then app run like this picture.
Mouse worked well, but multitouch screen do not work.


HDMI Portrait screen and HID multitouch.
Run ODROID Utility app.
Select HDMI Portrait and apply. Reboot.


Boot complete, automatically rotate screen to portrait.



Install Google Mobile Service apps.


2010년 5월 3일 월요일

[android] Home example 배경 화면 유지 하기

example 중에 Home example을 보면 Launcher의 대략적인 구조를 알 수 있습니다.
그래서 Home을 보고 이것 저것 바꿔 가면서 공부 중인데 화면이 회전 되면 배경이 지원지는 문제가 발생 합니다. 그래서 portrait에서 landscape 전화 시 배경화면이 유지도록 수정 해 보겠습니다.


portrait에서 landscape 전화 시 배경이 지워짐.


기본 개념은 wallpaper을 얻어와 서 자신의 window의 background로 설정 하는 것입니다.

private void setDefaultWallpaper() {
if (!mWallpaperChecked) {
Drawable wallpaper = peekWallpaper();
if (wallpaper == null) {
try {
clearWallpaper();
} catch (IOException e) {
Log.e(LOG_TAG, "Failed to clear wallpaper " + e);
}
} else {
getWindow().setBackgroundDrawable(new ClippedDrawable(wallpaper));
}
mWallpaperChecked = true;
}
}

이유는 모르겠지만 화면이 회전이 되면 다시 setBackgroundDrawable()을 해줘야 합니다.

화면 회전 시 Activity의 lifecycle의 onPause() -> onResume이 발생합니다.

그래서 onResume() 함수를 override 후 아래와 같이 setBackgroundDrawable()을 해 주면 됩니다.

@Override
protected void onResume() {
super.onResume();
getWindow().setBackgroundDrawable(new ClippedDrawable(getWallpaper()));
bindRecents();
}



아주 간단하게 수정이 되었지만 이 부분을 찾는 데 많이 삽질 했습니다.
덕분에 Activity, Window, View의 큰 그림을 이해하게 되었네요.

2010년 4월 30일 금요일

[android] 방향 알아 내기...

Android 단말기에서 Landscape, Portrait 상태 인지 확인 하는 방법 입니다.

public TestView extends View {

public TestView(Context)
{
super(context);
OrientationEventListener oel = new OrientationEventListener(getContext()) {
@Override
public void onOrientationChanged(int orientation) {
if (orientation >= 90) {
Toast.makeText(getContext(), "LandScape", Toast.LENGTH_SHORT).show();
} else if (orientation == 0) {
Toast.makeText(getContext(), "Portrait", Toast.LENGTH_SHORT).show();
}
}
}
oel.enable();

...
}

orientation이 단말기의 angle입니다.

0이면 portrait이고 90이면 landscape입니다.

여기서 특히한 점은 Accelerometter와 구현 방법이 차이가 납니다.
SensorManager에 listener를 register하는 방식이 아닙니다.

아래 소스틑 snake에서 Aceelerometer로 구현 한 것 입니다.

SensorManager sensorManager = (SensorManager)getContext().getSystemService(Context.SENSOR_SERVICE);
Sensor mSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
SensorEventListener sel = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;

if (java.lang.Math.abs(values[0]) - java.lang.Math.abs(values[1]) > 0) {
if (values[0] <>
if (mDirection != WEST) {
mNextDirection = EAST;
}
} else if (values[0] >= 0) {
if (mDirection != EAST) {
mNextDirection = WEST;
}
}
} else {
if (values[1] <>
if (mDirection != SOUTH) {
mNextDirection = NORTH;
}
} else if (values[1] >= 0) {
if (mDirection != NORTH) {
mNextDirection = SOUTH;
}
}
}
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
sensorManager.registerListener(sel, mSensor,SensorManager.SENSOR_DELAY_GAME);
}

SensorManager 부분이 필요 없습니다.