/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sim.glcameratest;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.SurfaceTexture;
import android.opengl.GLUtils;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Gravity;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.graphics.ImageFormat;
import android.graphics.SurfaceTexture.OnFrameAvailableListener;
import android.hardware.Camera;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaCodecList;
import android.media.MediaFormat;
import java.nio.ByteBuffer;
import android.view.Surface;
import android.os.Handler;
import android.hardware.usb.UsbDevice;
import android.widget.Toast;
import android.widget.Button;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.hardware.IFrameCallback;
import android.hardware.USBMonitor;
import android.hardware.UVCCamera;
import android.hardware.USBMonitor.OnDeviceConnectListener;
import android.hardware.USBMonitor.UsbControlBlock;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
import javax.microedition.khronos.opengles.GL;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.util.List;
import java.util.Iterator;
import java.lang.reflect.Method;
import android.opengl.GLES20;
import android.opengl.GLES11Ext;
import static android.opengl.GLES20.*;
@SuppressWarnings({"UnusedDeclaration"})
public class GLTextureViewActivity extends Activity implements
CameraDialog.CameraDialogParent {
private static final String TAG = "GLTextureView";
private static final int BACK_CAMERA_ID = 0;
private static final int FONT_CAMERA_ID = 1;
private static final int USB_CAMERA_ID = 2;
private RenderThread mFontRenderThread;
private RenderThread mBackRenderThread;
private RenderThread mUsbRenderThread;
private TextureView font_view;
private TextureView back_view;
private TextureView usb_view;
private SurfaceView surface_view;
private SurfaceHolder mSurfaceHolder;
private Camera mFontCamera;
private Camera mBackCamera;
private UVCCamera mUsbCamera;
private SurfaceTexture mFontSurfaceTexture;
private SurfaceTexture mBackSurfaceTexture;
private SurfaceTexture mUsbSurfaceTexture;
private long presentationTimeUs1 = System.nanoTime() / 1000;
private USBMonitor mUSBMonitor;
private Button mOpenUsbCamera;
private Handler mHandler = new Handler();
private final Object mSync = new Object();
private SurfaceTexture mUsbPreviewSurface;
private int mUsbWindowWidth;
private int mUsbWindowHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gl_textureview_activity);
font_view = (TextureView) findViewById(R.id.font_view);
back_view = (TextureView) findViewById(R.id.back_view);
usb_view = (TextureView) findViewById(R.id.usb_view);
surface_view = (SurfaceView) findViewById(R.id.surface_view);
mSurfaceHolder = surface_view.getHolder();
mOpenUsbCamera = (Button) findViewById(R.id.usb_open);
mUSBMonitor = new USBMonitor(this, mOnDeviceConnectListener);
font_view.setSurfaceTextureListener(new TextureView.SurfaceTextureListener(){
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Log.v("surface","onSurfaceTextureAvailable");
mFontRenderThread = new RenderThread(surface,width,height,
1920,1080,
GLTextureViewActivity.this,FONT_CAMERA_ID);
mFontRenderThread.start();
try {
Method openMethod = Class
.forName("android.hardware.Camera").getMethod(
"openLegacy", int.class, int.class);
mFontCamera = (android.hardware.Camera) openMethod.invoke(
null, 1, 0x100);
//mFontCamera = Camera.open(1);
Camera.Parameters parameters = mFontCamera.getParameters();
parameters.setPreviewSize(1920, 1080);
int[] max = determineMaximumSupportedFramerate(parameters);
Log.v("fps","max[0]="+max[0]+";max[1]"+max[1]);
parameters.setPreviewFpsRange(max[0], max[1]);
parameters.set("recording-hint","true");
mFontCamera.setParameters(parameters);
mFontSurfaceTexture = new SurfaceTexture(mFontRenderThread.getMainTextureId());
//Log.v("opengl","mRenderThread.getTextureId()="+mRenderThread.getTextureId());
mFontSurfaceTexture.setOnFrameAvailableListener(new OnFrameAvailableListener() {
@Override
public void onFrameAvailable(SurfaceTexture surfaceTexture) {
// TODO Auto-generated method stub
//Log.v("opengl","OnFrameAvailableListener");
synchronized(mFontRenderThread) {
mFontRenderThread.onFrameAvialble();
}
}
});
mFontRenderThread.setInSurface(mFontSurfaceTexture);
mFontCamera.setPreviewTexture(mFontSurfaceTexture);
//mCamera.setPreviewCallback(previewCallback1);
mFontCamera.startPreview();
detachCAmeraTexture(FONT_CAMERA_ID);
} catch (Exception e) {
Log.e("opengl",e.toString());
}
//mTextureView.setCameraDistance(5000);
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
Log.v("surface","onSurfaceTextureDestroyed");
mFontRenderThread.finish();
try {
mFontRenderThread.join();
} catch (InterruptedException e) {
Log.e(RenderThread.LOG_TAG, "Could not wait for render thread");
}
return true;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
});
back_view.setSurfaceTextureListener(new TextureView.Surfa
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
└─src └─com └─sim └─glcameratest CameraDialog.java GLTextureViewActivity.java 主业务Activity IOpenGLDemo.java MediaCodecRunable.java 编码器 OpenGLHelper.java OpenGLRenderer.java OpenGLUtils.java Util.java
资源推荐
资源详情
资源评论
收起资源包目录
GLCameraTest.zip (86个子文件)
GLCameraTest
project.properties 563B
.classpath 466B
.settings
org.eclipse.jdt.core.prefs 173B
assets
Android.mk 828B
src
com
sim
glcameratest
GLTextureViewActivity.java 41KB
CameraDialog.java 8KB
IOpenGLDemo.java 150B
MediaCodecRunable.java 9KB
OpenGLRenderer.java 2KB
Util.java 3KB
OpenGLHelper.java 13KB
OpenGLUtils.java 1KB
lint.xml 53B
res
anim
fade_in.xml 825B
fade_out.xml 817B
accelerate_interpolator_2.xml 774B
slide_off_left.xml 884B
drawable-nodpi
progress_vertical_secondary_holo_dark.9.png 204B
progress_vertical_bg_holo_dark.9.png 189B
very_large_photo.jpg 1.7MB
progress_vertical_primary_holo_dark.9.png 506B
scrubber_vertical_track_holo_dark.9.png 185B
scrubber_vertical_primary_holo.9.png 177B
spot_mask.png 25KB
appwidget_bg_press.9.png 2KB
appwidget_bg_focus.9.png 2KB
appwidget_bg.9.png 2KB
widget_title_bg.9.png 1KB
scrubber_vertical_track_holo_light.9.png 170B
large_photo.jpg 304KB
scrubber_vertical_secondary_holo.9.png 179B
patch.9.png 3KB
green_gradient.9.png 1KB
patch2.9.png 3KB
drawable-mdpi
expander_ic_minimized.9.png 2KB
expander_ic_maximized.9.png 2KB
drawable-xhdpi
drawable-ldpi
xml
device_filter.xml 1KB
values
dimens.xml 449B
strings.xml 3KB
styles.xml 2KB
layout
dialog_camera.xml 2KB
listitem_device.xml 1KB
gl_textureview_activity.xml 942B
drawable
robot.png 6KB
sunset3.png 45KB
round_rect_background.xml 192B
btn_toggle_off.9.png 364B
default_wallpaper.png 313KB
btn_toggle_on.9.png 442B
widget_header.png 6KB
appwidget_background.xml 1KB
progress_vertical_holo_dark.xml 1KB
appwidget_bg_press.9.png 2KB
scrubber_progress_vertical_holo_dark.xml 1KB
appwidget_bg_focus.9.png 2KB
appwidget_bg.9.png 2KB
sunset2.png 54KB
widget_title_bg.9.png 1KB
sunset1.jpg 24KB
icon.png 3KB
gradient.xml 868B
green_gradient.9.png 1KB
raw
colorgrid_video.mp4 25KB
drawable-hdpi
sunset3.png 45KB
widget_header.png 4KB
appwidget_background.xml 1KB
sunset2.png 54KB
sunset1.jpg 24KB
icon.png 5KB
bin
classes
com
sim
glcameratest
CameraDialog$DeviceListAdapter.class 2KB
OpenGLRenderer.class 2KB
GLTextureViewActivity$RenderThread.class 7KB
Util.class 3KB
CameraDialog$CameraDialogParent.class 1KB
MediaCodecRunable.class 6KB
OpenGLHelper.class 10KB
IOpenGLDemo.class 192B
GLTextureViewActivity.class 6KB
OpenGLUtils.class 1KB
BuildConfig.class 349B
CameraDialog.class 4KB
res
AndroidManifest.xml 2KB
.project 821B
.gitignore 24B
AndroidManifest.xml 2KB
gen
com
sim
glcameratest
BuildConfig.java 162B
共 86 条
- 1
资源评论
lichuangdada
- 粉丝: 1
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功