編輯:關於Android編程
在使用android的camera的時候會遇到兩個問題,一個是camera在preview的時候orientation的問題,第二個就是在takePicture之後回遇到保存下來的圖片旋轉90度的問題
先解決第一個preview的orientation的問題,第一:在android2.2與以後的sdk版本中camera的orientation都是用的landscape,如果你的activity的screenOrientation設置成landscape的話,就不會有這個問題;第二:如果你的activity必須用portrait,那麼可以在調用camera.open()方法之後調用下面這個方法來解決這個問題,
[java]
camera.setDisplayOrientation(90);
如果你用的sdk是2.2之前的話,可以這樣解決:
[java]
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
rotateMethod.invoke(camera, 90);
下面就是如何解決保存Portrait模式下圖片旋轉90度的問題
下面的程序在onPictureTaken方法裡面執行
[java]
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 6;
options.inDither = false;
options.inPurgeable = true;
options.inInputShareable = true;
[java]
<span style="white-space:pre"> </span>options.inTempStorage = new byte[32 * 1024];
[java]
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bMap;
bMap = BitmapFactory.decodeByteArray(imgData[0], 0, imgData[0].length, options);
if(bMap.getHeight() < bMap.getWidth()){
orientation = 90;
} else {
orientation = 0; www.2cto.com
}
Bitmap bMapRotate;
if (orientation != 0) {
Matrix matrix = new Matrix();
matrix.postRotate(orientation);
bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(),
bMap.getHeight(), matrix, true);
} else
bMapRotate = Bitmap.createScaledBitmap(bMap, bMap.getWidth(),
bMap.getHeight(), true);
FileOutputStream out;
try {
File imgFile = new File("/xxxx/xxx/snap.jpeg");
out = new FileOutputStream(imgFile);
bMapRotate.compress(Bitmap.CompressFormat.JPEG, 90, out);
if (bMapRotate != null) {
bMapRotate.recycle();
bMapRotate = null;
}
<span style="white-space:pre"> </span>camera.startPreview();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Android App的圖形用戶界面是由一層層的View和ViewGroup對象建立起來的。View對象一般是UI控件(widgets),例如button 或者 text
1、android支持庫未安裝 編譯不過,提示如下: Could not find any version that matches com.android.suppor
EasyLikeArea Easy like area in the circle of friends or QQ qzone
先來看一段代碼: public static void main(String[] args) { new Timer().schedule(new TimerTas