寫了一個照相機的功能,想在拍照後的照片,加上文字
看了很多範例,先寫一個主要的java檔,裡面只有一個
Button,按下button後,
preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
裡面的三個函式,也寫在同一個java
然後還有另一個prview.java 檔
裡頭就是一些照相機的設置,就像下列
其中的draw函式,是我想在拍攝後的圖片,加上yes這個字,
但是每次拍照後,所存下的檔案,裡頭都沒有任何文字出現
該怎麼解決呢
拜託大大們了
package cgt.test;
import java.io.IOException;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
class Preview extends SurfaceView implements SurfaceHolder.Callback
{
SurfaceHolder surfaceHolder;
public Camera camera;
private Paint paint;
Preview(Context context)
{
super(context);
/* 取得holder */
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
/* 設定預覽Buffer Type */
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder)
{
/* 若相機非在預覽模式,則開啟相機 */
camera = Camera.open();
try
{
/* setPreviewDisplay唯一的參數為SurfaceHolder */
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(new PreviewCallback()
{
public void onPreviewFrame(byte[] data, Camera arg1)
{
/* 在此可針對預覽圖像作一些優化 */
}
});
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void surfaceDestroyed(SurfaceHolder holder)
{
/* 停止Preview */
camera.stopPreview();
camera.release();
camera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
{
/* 建立Camera.Parameters物件 */
Camera.Parameters parameters = camera.getParameters();
/* 設定預覽畫面大小 */
parameters.setPreviewSize(320, 240);
/* 設定圖像格式 */
parameters.setPictureFormat(PixelFormat.JPEG);
/* 將上述設定之參數給Camera */
camera.setParameters(parameters);
/* 立即執行Preview */
camera.startPreview();
}
@Override
public void draw(Canvas canvas)
{
super.draw(canvas);
canvas = surfaceHolder.lockCanvas(null);
paint = new Paint();
paint.setColor(Color.BLUE);
/* 繪製畫布 */
canvas.drawColor(Color.BLACK);
/* 於畫布繪製圖形 */
//canvas.drawRect(new RectF( pLeft,pTop,pRight,pBottom ), paint);
canvas.drawText("yes", 100, 100, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.132.201