是否有任何方法可以在Android(非root手机)中静音相机快门声音?
拍照时我使用此代码静音我的音频声音:
AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int streamType = AudioManager.STREAM_SYSTEM;
mgr.setStreamSolo(streamType, true);
mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mgr.setStreamMute(streamType, true);
Run Code Online (Sandbox Code Playgroud)
我把声音静音,手机静音.
mCamera.takePicture(null, null, photoCallback);
Run Code Online (Sandbox Code Playgroud)
然后拍照
它正在努力HTC HERO, HTC Desire, Motorola ME860, MotoA953.但是,当我测试Samsung Tab p1000和Sony Experia R800i,它不工作.还有其他工作吗?
我正在使用Sencha Touch和Phonegap来显示用相机拍摄的照片.通过cordova2.7.0在iphone上拍照时,图像以正确的方向绘制.但是使用三星s3,图片将倾斜-90°(仅适用于肖像图像).
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 25,
destinationType: destinationType.FILE_URI,
targetWidth: 120,
targeHeight: 120,
correctOrientation: true,
sourceType: source });
Run Code Online (Sandbox Code Playgroud)
我用上面的代码拍照.肖像图像以正确的方向从相机显示器拍摄,问题仅发生在从图库中拍摄的肖像图像.有什么方法可以解决这个问题吗?
我正在尝试使用Camera2 API获取QR码扫描功能的预览框架.在旧的Camera API中,它很简单:
android.hardware.Camera mCamera;
...
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// will be invoked for every preview frame in addition to displaying them on the screen
}
});
Run Code Online (Sandbox Code Playgroud)
不过,我不能找到一种方法来实现,使用新 Camera2 API.我想收到多个我可以处理的帧 - 最好的是接收旧API中的字节数组.任何想法如何做到这一点?
android android-hardware android-camera android-5.0-lollipop
我想在android上的GPU上进行相机图像处理.
在我目前的设置中,我使用SurfaceTexture从相机图像流中捕获帧作为OpenGL ES纹理.这是在我的着色器中访问相机流的有效方法.(http://developer.android.com/reference/android/graphics/SurfaceTexture.html)
现在我想开始使用新的RenderScript API而不是直接使用OenGL ES.(http://developer.android.com/guide/topics/renderscript/index.html)
但是要创建SurfaceTexture,我需要将openGl纹理ID传递给构造函数.遗憾的是,纹理ID不可用(RenderScript使用Allocation类来加载纹理,不会显示纹理ID).所以我在使用RenderScript时无法创建SurfaceTexture.
我已经阅读了关于renderscript的所有文档(它仍然非常稀疏)并查看了示例,但它们没有关于该主题的信息.
所以我的问题是:是否可以将SurfaceTexture与RenderScript结合使用,还是有其他有效的方法在RenderScript Graphics脚本中使用实时相机流?
我正在实现一款应用内相机,每次拍照时我的图像都是320x240,不过手机的相机能够分辨率更高(Galaxy Nexus).我找不到用于设置分辨率的参数,那么如何提高我拍摄的图像的分辨率?这是相关的代码:
@Override
public void surfaceCreated( SurfaceHolder holder ) {
setSurfaceHolder( holder );
}
@Override
public void surfaceDestroyed( SurfaceHolder holder ) {
setSurfaceHolder( null );
}
private void attachCameraToSurface( Camera camera, SurfaceHolder holder ) {
try {
camera.setPreviewDisplay( holder );
setInPreview( true );
}
catch (IOException e) {
Log.e( "CameraFragment", "Exception in attachCameraToSurface()", e );
}
}
@Override
public void surfaceChanged( SurfaceHolder holder, int format, int width, int height ) {
Camera camera = getCamera();
if ( camera == null …Run Code Online (Sandbox Code Playgroud) 在我的Fragment尝试从我的相机拍照,但onActivityResult我Fragment没有被调用.拍照后这Fragment没有显示,正在切换到我的第一个Fragment.在那里有任何其他方式来捕捉a中的照片Fragment,或者我做错了什么?
这是我目前的代码:
public void takePhoto() {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(Environment.getExternalStorageDirectory(), "Pic.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
PhotosListFragment.this.startActivityForResult(intent, 100);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 100:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getActivity().getContentResolver().notifyChange(selectedImage, null);
ContentResolver cr = getActivity().getContentResolver();
Bitmap bitmap;
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
viewHolder.imageView.setImageBitmap(bitmap); …Run Code Online (Sandbox Code Playgroud) 我有一个自定义相机应用程序,我想要任何预览尺寸以全屏模式显示它而不拉伸相机预览图像.对于这一点,我需要做的surfaceView大于屏幕,以保持宽高比,所以实际上用户将看到小于照相机实际拍摄.
出于某种原因,我无法使SurfaceView屏幕尺寸大于屏幕尺寸.
到目前为止我尝试过的:
调整surfaceChanged方法中的相机预览
调整on onMeasure方法中的相机预览
onLayout FLAG_LAYOUT_NO_LIMITS到活动 - 信息clipChildren 用于表面视图 - 信息android:layout_width="852px" getWindow().setLayout(852, 1280); 在活动中但是没有任何成功 - 每次的行为都是一样的:它看起来好一秒钟,然后就会拉长.
这是代码:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private static final int CAMERA_ROTATE_ANGLE = 90;
private SurfaceHolder cameraHolder;
private Camera androidHardCamera;
private Context context;
public CameraPreview(Context context) {
super(context);
this.context = context;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is …Run Code Online (Sandbox Code Playgroud) 在几个教程和示例之后,我提出了将相机焦点设置在特定位置的下一个算法,问题是相机完全忽略了光点并执行了正常的整体焦点而不是我指定的矩形区域.我在算法中还缺少什么?这已经在Android 4.0及更高版本的几部手机上进行了测试,因此这些设备支持焦点区域API.请注意,我正在编写的应用程序仅在横向模式下工作.
@Override
public boolean onTouchEvent(final MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_UP)
{
float x = event.getX();
float y = event.getY();
float touchMajor = event.getTouchMajor();
float touchMinor = event.getTouchMinor();
Rect touchRect = new Rect((int)(x - touchMajor / 2), (int)(y - touchMinor / 2), (int)(x + touchMajor / 2), (int)(y + touchMinor / 2));
this.submitFocusAreaRect(touchRect);
}
}
private void submitFocusAreaRect(final Rect touchRect)
{
Camera.Parameters cameraParameters = camera.getParameters();
if (cameraParameters.getMaxNumFocusAreas() == 0)
{
return;
}
// Convert from View's width and …Run Code Online (Sandbox Code Playgroud) 我有一个相机应用程序,锁定到景观.需要时,我会旋转从中获取的原始字节,onPreviewFrame()并使用它们对视频进行编码.
然而,这种方法在Nexus 5X和6设备中失败了,因为它们的反向传感器让我倒置了帧.
随着旋转的预览会不会帮助我在这种情况下,描述在这里:
这不影响在onPreviewFrame(byte [],Camera)中传递的字节数组的顺序
我想知道是否有任何方法可以检测相机传感器是否反转和/或原始帧是否颠倒,因此在旋转时会增加额外的校正.
我2个月后开始使用cordova Android编程.一切都很好主要是现在没有工作的相机.但上周一些我的项目目录如何被删除,我重新安装所有插件的cordova和编译项目,但现在它显示错误'非法参数异常'在相机上点击令人惊讶的事情是我没有更改单行代码,它也正常工作在其他开发者机器上.
cordova插件添加了使用相机插件安装的cordova-plugin-camera命令.
camera_app.js文件
var pictureSource; // picture source
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
// largeImage.src = imageURI;
console.log(imageURI);
console.log(document_type);
}
function getPhoto(docType) {
// Retrieve image file location from specified source
document_type = docType
$('.docError').hide(); …Run Code Online (Sandbox Code Playgroud) android cross-platform android-camera cordova cordova-plugins
android ×10
android-camera ×10
cordova ×2
audio ×1
camera ×1
focus ×1
nexus6 ×1
renderscript ×1
sencha-touch ×1
surfaceview ×1