Android 端末の画面サイズが知りたかったので、まとめページもろもろ
教えてくれたみなさん、ありがとうございます~。
・http://jp.techcrunch.com/archives/20091019android-galore-a-complete-list-of-the-android-phones-and-their-specs-droid-best/
・http://ow.ly/1BfvB
・http://www.taosoftware.co.jp/android/device/htc.html
・http://www.taosoftware.co.jp/blog/2010/04/android_tdpiinfo_2.html
2010年4月23日金曜日
2010年4月6日火曜日
Android Bitmap Tips - jpg, png 作成とか -
Bitmap.Config の値
ALPHA_8 :Alpha のみ
ARGB_4444 :128
ARGB_8888 :256
RGB_565 :Alphaなし Bitmap.hasAlpha() は常に false になる
今気づいたけど、Bitmap って Parcelable だったんだ。
Bitmap を単一色で塗りつぶす
Resource から BitmapFactory.decodeResource(getResources(), R.id.bitmap1)
とかで作った Bitmap は immutable = 不変 なので、
eraseColor() とかするには、mutable な Bitmap をコピーして
作成しないといけない。
つまり、これはエラー(IllegalStateException)になる
こっちは、エラーにならない
Bitmap から .png .jpg ファイルを作成する
boolean Bimap.compress (Bitmap.CompressFormat format, int quality, OutputStream stream)
を使います。
format には、
Bitmap.CompressFormat.JPEG
or
Bitmap.CompressFormat.PNG
を指定し、
quality には 0 ~ 100 を指定します。普通は100?
stream には、圧縮したビットストリームを流し込む先
を指定します。
成功すると true が返ってきます。
あとは、stream を hogehoge.png とか hogehoge.jpg で
保存すればOK
Alpha値だけの Bitmap にする
Alpha値だけ抜き出した Bitmap を作成するには
Bitmap.extractAlpha()
を使います。
* Xperia ではこのメソッドは使えませんでした。
代わりに
Bitmap.copy(Bitmap.Config.ALPHA_8, true)
で Alpha値だけ抜き出した Bitmap が作れます
特定のXY座標の色を取得する
ある、XY座標の Color を取得するには
int Bitmap.getPixel (int x, int y)
を使います。
x の範囲は 0 ~ width - 1
y の範囲は 0 ~ height - 1
戻り値は argb Color です。
x, y が Bitmap の境界より大きい場合は
IllegalArgumentException が返ってきます。
ALPHA_8 :Alpha のみ
ARGB_4444 :128
ARGB_8888 :256
RGB_565 :Alphaなし Bitmap.hasAlpha() は常に false になる
今気づいたけど、Bitmap って Parcelable だったんだ。
Bitmap を単一色で塗りつぶす
Resource から BitmapFactory.decodeResource(getResources(), R.id.bitmap1)
とかで作った Bitmap は immutable = 不変 なので、
eraseColor() とかするには、mutable な Bitmap をコピーして
作成しないといけない。
つまり、これはエラー(IllegalStateException)になる
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
bm1.eraseColor(Color.BLACK);
こっちは、エラーにならない
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
Bitmap bm2 = bm1.copy(bm1.getConfig(), true);
bm2.eraseColor(Color.BLACK);
Bitmap から .png .jpg ファイルを作成する
boolean Bimap.compress (Bitmap.CompressFormat format, int quality, OutputStream stream)
を使います。
format には、
Bitmap.CompressFormat.JPEG
or
Bitmap.CompressFormat.PNG
を指定し、
quality には 0 ~ 100 を指定します。普通は100?
stream には、圧縮したビットストリームを流し込む先
を指定します。
成功すると true が返ってきます。
あとは、stream を hogehoge.png とか hogehoge.jpg で
保存すればOK
Alpha値だけの Bitmap にする
Alpha値だけ抜き出した Bitmap を作成するには
Bitmap.extractAlpha()
を使います。
* Xperia ではこのメソッドは使えませんでした。
代わりに
Bitmap.copy(Bitmap.Config.ALPHA_8, true)
で Alpha値だけ抜き出した Bitmap が作れます
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
Bitmap bm2 = mb1.extractAlpha();
特定のXY座標の色を取得する
ある、XY座標の Color を取得するには
int Bitmap.getPixel (int x, int y)
を使います。
x の範囲は 0 ~ width - 1
y の範囲は 0 ~ height - 1
戻り値は argb Color です。
x, y が Bitmap の境界より大きい場合は
IllegalArgumentException が返ってきます。
2010年4月3日土曜日
Android カメラに autofocus を実装する。
google先生にお尋ねしても、わかりやすいサイトが
なかったので、書きました。
カメラ部分は木南さんの本を参考にしています。
『Google-Androidアプリケーション開発入門』
ありがとうございます!!
買った方がいいですよ~。
シャッターボタンを押されたときに
Camera.autoFocus(Camera.AutoFocusCallback);
を呼んで,
Camera.AutoFocusCallback
で、autofocus を切って、takePicture すればOK
そうそう、カメラを使う場合には、manifest に
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
が必要です~。
なかったので、書きました。
カメラ部分は木南さんの本を参考にしています。
『Google-Androidアプリケーション開発入門』
ありがとうございます!!
買った方がいいですよ~。
シャッターボタンを押されたときに
Camera.autoFocus(Camera.AutoFocusCallback);
を呼んで,
Camera.AutoFocusCallback
で、autofocus を切って、takePicture すればOK
そうそう、カメラを使う場合には、manifest に
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
が必要です~。
public class MyPic extends Activity {
private static final String TAG = "MyPic";
private static final int IN_SAMPLE_SIZE = 1;
private Camera mCamera;
private ImageView mImage;
private boolean mInProgress;
private SurfaceHolder.Callback mSurfaceListener =
new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
Log.i(TAG, "Camera opened");
try {
mCamera.setPreviewDisplay(holder);
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.release();
mCamera = null;
Log.i(TAG, "Camera released");
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(width, height);
mCamera.setParameters(parameters);
mCamera.startPreview();
Log.i(TAG, "Camera preview started");
Log.i(TAG, "width : " + width);
Log.i(TAG, "height : " + height);
}
};
private Camera.AutoFocusCallback mAutoFocusListener =
new Camera.AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
Log.i(TAG,"AutoFocus : " + success);
camera.autoFocus(null);
camera.takePicture(mShutterListener, null, mPictureListener);
mInProgress = true;
}
};
private Camera.ShutterCallback mShutterListener =
new Camera.ShutterCallback() {
@Override
public void onShutter() {
Log.i(TAG, "onShutter");
}
};
private View.OnClickListener mButtonListener =
new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mCamera != null && mInProgress == false){
mCamera.autoFocus(mAutoFocusListener);
}
}
};
private Camera.PictureCallback mPictureListener =
new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "Picture taken");
if(data != null) {
Log.i(TAG, "JPEG Picture Taken");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = IN_SAMPLE_SIZE;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
mImage.setImageBitmap(bitmap);
mImage.setVisibility(View.VISIBLE);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera2);
mImage = (ImageView) findViewById(R.id.handpreview);
SurfaceView surface = (SurfaceView) findViewById(R.id.surfaceview);
SurfaceHolder holder = surface.getHolder();
holder.addCallback(mSurfaceListener);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
ImageButton button = (ImageButton) findViewById(R.id.shutter);
button.setOnClickListener(mButtonListener);
}
}
2010年4月2日金曜日
Android Toast で画像を表示する
Toast に setView() で View を設定すると、任意の View
を表示することができます。
こんな感じ
View ならばOKなので、xml でレイアウトを
定義した場合は Infrater を使います。
を表示することができます。
こんな感じ
ImageView v = new ImageView(this);
v.setImageResource(R.drawable.addnote_off);
toast = new Toast(this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(v);
toast.show();
View ならばOKなので、xml でレイアウトを
定義した場合は Infrater を使います。
LayoutInflater inflater = getLayoutInflater();
View v = inflater.inflate(R.layout.iv, null);
toast = new Toast(this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(v);
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/addnote_off" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello toast"
android:textColor="#000000"
android:background="#ffffff" />
</LinearLayout>
登録:
投稿 (Atom)