我已经尝试了几个我在网上找到的答案,例如:
Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
要么
mMediaRecorder.setVideoSource(2);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我还在清单文件上设置了权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我已经搜索了StackOverflow,我知道之前已经问过这个问题,但似乎没有确定的解决方案,任何形式的帮助都将受到赞赏.
注意:我在2.1平台上使用Galaxy S.
我要做的是:打开相机并将拍摄的照片保存在SD卡中,但是当相机活动开始时,我会收到一个自动生成的警告,显示在"吐司"中并说:"之前插入SD卡使用相机"
注意:我正在使用模拟器.
任何想法如何解决这个问题?

我的相机应用程序有问题.相机活动处于纵向模式.所以我给了
camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)
根据SO中的不同帖子,这将在纵向模式下正常工作.
但它不能正常使用不同的设备.问题是,预览向左或向右旋转90度.在Htc中没关系.但是对于Galaxy系列,它不起作用.
谁能帮我 ?
我正在创建一个具有首选项活动的应用程序,其中列表首选项条目有问题.这个应用程序在我的模拟器上工作正常,但我在移动设备上测试我的应用程序时显示错误
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsListView.obtainView(AbsListView.java:2033)
Run Code Online (Sandbox Code Playgroud)
当我在移动设备中单击该列表首选项时,会出现此问题.这是我的代码
prference.xml
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/settings">
<ListPreference
android:key="@string/resolution"
android:title="@string/imageres"
android:summary="@string/summaryres"
android:dialogTitle="@string/resFormat"
/>
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
settings.java
package com.example;
import android.database.Cursor;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
public class Settings extends PreferenceActivity {
private SQLiteoperations SQLiteAdapter;
DTO get;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
get = (DTO) getIntent().getExtras().get("obj");
SQLiteAdapter = new SQLiteoperations(this);
SQLiteAdapter.openToWrite();
addPreferencesFromResource(R.xml.preferences);
ListPreference pref = (ListPreference) findPreference("resolution");
pref.setEntries(getEntries());
pref.setEntryValues(getEntries());
System.out.println("after set entries");
System.out.println(get.getDefaultvalues());
pref.setDefaultValue(get.getDefaultvalues());
}
private CharSequence[] getEntries() …Run Code Online (Sandbox Code Playgroud) android preferenceactivity android-preferences android-camera
是否可以在fragment相似的视图中使用相机,以便它不会打开另一个应用程序并远离我的特殊应用程序?
我想要一些像SurfaceView相机一样的东西?
我一直在寻找一个如何在我的应用程序中实现配置文件图片更改的示例.我想允许人们使用Parse.com添加/更改他们的个人资料图片(类似于今天的所有社交媒体应用程序).
例如: Twitter,Facebook,Instagram等,它们都允许您拍摄/上传个人资料图像,并保存该图像,以后可以查看.
我没有找到任何材料来解决如何做这样的事情,似乎没有其他人理解我在这里想要实现的目标:
到目前为止,在我的应用程序中,用户可以使用相机意图拍摄照片或从图库上传图像,该图像将在图像视图中完美显示.
问题是:当我退出并重新打开应用程序时,图像视图内的图像不再显示(它已消失).
我怎么解决这个问题?
主要活动:
public class MainActivity extends AppCompatActivity {
public static final int TAKE_PIC_REQUEST_CODE = 0;
public static final int CHOOSE_PIC_REQUEST_CODE = 1;
public static final int MEDIA_TYPE_IMAGE = 2;
private Uri mMediaUri;
private TextView mChangeProfilePic;
protected ImageView mPreviewImageView;
private Button mSaveChangesBtn;
public ImageView mProfilePic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { …Run Code Online (Sandbox Code Playgroud) android image android-camera android-activity parse-platform
我在这里玩BarCode扫描仪的原始示例:
他们可以在相机工厂内启动AutoFocus/Flash,如下所示:
// Creates and starts the camera. Note that this uses a higher resolution in comparison
// to other detection examples to enable the barcode detector to detect small barcodes
// at long distances.
CameraSource.Builder builder = new CameraSource.Builder(getApplicationContext(), barcodeDetector)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(1600, 1024)
.setRequestedFps(15.0f);
// make sure that auto focus is an available option
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
builder = builder.setFocusMode(
autoFocus ? Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE : null);
}
mCameraSource = builder
.setFlashMode(useFlash ? Camera.Parameters.FLASH_MODE_TORCH : null)
.build();
Run Code Online (Sandbox Code Playgroud)
但是,cameraSource构建器上的此方法在当前版本中已消失,因此无法访问此设置.此外,我需要在使用过程中更改FlashMode,因此这也不是这样做的方法.我发现这个丑陋的解决方案来访问相机: …
我正在尝试让Android camera2在后台服务中运行,然后在回调ImageReader.OnImageAvailableListener中处理帧.我已经使用建议的原始格式YUV_420_888来获得最大fps,但是我只能在分辨率640x480上获得7fps左右.这甚至比我使用旧的Camera接口(我想升级到Camera2以获得更高的fps)或使用OpenCV JavaCameraView(我不能使用它,因为我需要在后台服务中运行处理)更慢.
以下是我的服务类.我错过了什么?
我的手机是运行Android 5.0.2的Redmi Note 3
public class Camera2ServiceYUV extends Service {
protected static final String TAG = "VideoProcessing";
protected static final int CAMERACHOICE = CameraCharacteristics.LENS_FACING_BACK;
protected CameraDevice cameraDevice;
protected CameraCaptureSession captureSession;
protected ImageReader imageReader;
// A semaphore to prevent the app from exiting before closing the camera.
private Semaphore mCameraOpenCloseLock = new Semaphore(1);
public static final String RESULT_RECEIVER = "resultReceiver";
private static final int JPEG_COMPRESSION = 90;
public static final int RESULT_OK = 0;
public static final …Run Code Online (Sandbox Code Playgroud) 我正在研究新的 CameraX API,以了解从我们当前的 Camera2 系统切换的可行性。
在我们的 Camera2 系统中,我们使用 OpenGL 表面从 PreviewCaptureSession 捕获帧,并且我们在大多数设备上达到一致的 30fps 图像处理速度,有些能够在启用 AutoExposure 设置的情况下达到 60fps。
CameraX 没有提供接近该速度的任何东西,我不确定它是否是我在设置中遗漏的东西。
我已经为 CameraX 和 ImageAnalysis 设置了测试示例,但是我正在锁定通过图像数量的帧速率。
例如,我可以将分辨率设置为低至 320x240 到 1920x960,并且两者都会以(看似上限)16fps 的速度出现。
当我添加一个预览用例与它一起运行并设置 enableTorch(true) 时,ImageAnalysis 用例将突然开始变得更像 20fps,它偶尔会达到 30ish。
显然预览用例改变了相机的一些 AutoExposure 状态?
这是我当前设置的狙击手......
private fun startCameraAnalysis() {
val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
var resolution = Size(metrics.widthPixels, metrics.heightPixels)
resolution = Size(640, 480) //set to fixed size for testing
val aspectRatio = Rational(resolution.width, resolution.height)
val rotation = viewFinder.display.rotation
// Setup image analysis pipeline
val …Run Code Online (Sandbox Code Playgroud)
我在专为 Google Pixel 3 XL 设计的相机应用中使用了 camera2 api。该设备有两个前置摄像头(广角和普通)。多亏了多摄像头功能,我可以同时访问两个物理摄像头设备,我的应用程序具有在这两个摄像头之间切换的功能。在我最近升级到 Android 10 之前,我可以准确地看到两个不同的结果,但现在我的广角捕捉帧与普通相机具有几乎相同的 FOV(视野)。因此,Android 9 广角捕获结果上的相同代码、相同 apk 是宽的,正如预期的那样,并且在 Andoird 10 升级之后 - 广角和普通相机显示几乎相同的 FOV。
这是一个代码片段,用于演示我如何初始化两个摄像头并捕获预览:
主活动.kt
private val surfaceReadyCallback = object: SurfaceHolder.Callback {
override fun surfaceChanged(p0: SurfaceHolder?, p1: Int, p2: Int, p3: Int) { }
override fun surfaceDestroyed(p0: SurfaceHolder?) { }
override fun surfaceCreated(p0: SurfaceHolder?) {
// Get the two output targets from the activity / fragment
val surface1 = surfaceView1.holder.surface
val surface2 = surfaceView2.holder.surface
val dualCamera = findShortLongCameraPair(cameraManager)!!
val outputTargets = …Run Code Online (Sandbox Code Playgroud) android ×10
android-camera ×10
android-10.0 ×1
camera ×1
camera-flash ×1
fragment ×1
image ×1
opencv ×1
orientation ×1