我有两个选项"选择照片"和"拍照" - 我的选择照片功能完全正常,但拍照时出现问题.主要是保存的图像在保存后显示在图像视图中.
定义了我的照片位置:
public class photoActivity extends Activity {
private String photoPath;
private ImageView imgView;
{...}
Run Code Online (Sandbox Code Playgroud)
我的相机听众:
bPicFromCam.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
long captureTime = System.currentTimeMillis();
photoPath = Environment.getExternalStorageDirectory() + "/MYAPP" + captureTime + ".jpg";
getPicFromCam(v);
}
else{
Toast.makeText(getApplicationContext(),
"Sorry there is a problem accessing your SDCard, " +
"please select a picture from your gallery instead.", Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后我的代码启动相机意图(注意photoPath是正确的):
public void getPicFromCam(View view){
System.out.println("photoPath: " + …Run Code Online (Sandbox Code Playgroud) 我很困惑在哪里添加
使用特征
清单中的标签.我在我的应用程序中使用相机.我添加了许可,但我很困惑在哪里添加功能,以便使用前置摄像头.你能帮我吗?
我想创建一个应用程序,它必须记录视频(使用媒体记录器)和录制的视频需要格式化(使用相机).
我创建了下面显示的示例代码,但是当从菜单按下startrecording按钮时显示错误.它显示强制关闭错误.但previewcallback没有错误.我的代码如下所示
package buffer.video;
import android.app.Activity;
import android.os.Bundle;
import java.io.IOException;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;
public class VofoVideoToBufferActivity extends Activity implements SurfaceHolder.Callback,
Camera.AutoFocusCallback {
private SurfaceView preview;
private SurfaceHolder previewHolder;
private MediaRecorder mRecorder;
private Camera mCamera;
private boolean mPreviewRunning = false;
private boolean mCaptureFrame = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("", "Begin onCreate");
setContentView(R.layout.main);
preview = (SurfaceView) findViewById(R.id.surfaceView1);
previewHolder …Run Code Online (Sandbox Code Playgroud) 我正在三星Galaxy Ace上测试我的应用程序,我得到支持的尺寸
cameraParams.getSupportedPictureSizes();
Run Code Online (Sandbox Code Playgroud)
除了(320 x 240)之外,它适用于所有这些 - 预览变黑,我收到此错误: Camera Error 100
首先我知道这是重复的问题,但我没有从图库或相机捕获图像的问题.我创建了虚拟项目以检查我的代码在这里工作正常但是当我在我的项目中使用相同的代码时,它甚至没有工作,即使我没有得到任何错误,一旦我开始活动结果它被取消但我仍然可以看到画廊的图像我可以从相机捕捉图像.
当我检查logcat时,我发现以下警告不知道它为什么会到来以及如何解决这个问题
W/NetworkConnectivityListener(2399): onReceived() called with CONNECTED and Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000000 (has extras) }
Run Code Online (Sandbox Code Playgroud)
编辑: - 添加代码
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.camera:
//define the file-name to save photo taken by Camera activity
String fileName = "new-photo-name.jpg";
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); …Run Code Online (Sandbox Code Playgroud) 我想在android中创建一个应用程序,当将USB摄像头设备连接到Android设备时,所有应用程序都应将外部摄像头检测为主摄像头.例如,如果我们打开相机应用程序,那么设备将从通过USB连接的图片中获取图片.有没有办法做到这一点?
请不要将此问题视为不是真正的问题.
这可能很容易与另一个问题重复,我只是在努力弄清楚要搜索什么.
我的相机应用程序被锁定在横向模式(在清单中),如下所示:
android:screenOrientation="landscape"
Run Code Online (Sandbox Code Playgroud)
不过,我想还是有的旋转UI元素,当设备旋转为纵向(尽管机器人仍然会想起它的目的在景观,但多数民众赞成).
所以我试过这个来检查方向
int rotation = this.getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
Log.d("Rotation", "0");
break;
case Surface.ROTATION_90:
Log.d("Rotation", "90");
break;
case Surface.ROTATION_180:
Log.d("Rotation", "180");
break;
case Surface.ROTATION_270:
Log.d("Rotation", "270");
break;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,无论我如何转动手机,它总会返回90.是否有更强大的方式来获得方向,无论Android"认为"的方向是什么?
根据这篇文章,大多数设备都可以合理地支持640x480 预览尺寸/分辨率.图片(而不是预览)分辨率/尺寸怎么样?有没有办法找出或现有资源列出通常支持的设备的图像分辨率/大小?我的印象是640x480图片大小得到广泛支持,但还有什么?
我意识到getSupportedPictureSizes()返回当前设备支持的列表图片大小,但我想知道在世界各地的设备范围内支持的图片大小的分布情况.从我所看到的,Dashboads和Developer Console都不提供这些信息.
注1:近似数据的一种可能方法是从流行的Android设备列表(例如此设备)开始,并在这些手机上查找支持的相机图片尺寸.大多数规格网站(例如这一个或这个)只列出了最大分辨率.
注2:似乎在某些手机上,setPictureSize()出于所有意图和目的而被破坏,因此不应使用; 但是,了解其他(非破坏)Android设备的常见图片尺寸仍然有用.
我正在尝试使用简单的SurfaceView使新的Camera2工作,我在实时预览中遇到了一些问题.在某些设备上,图像会按比例拉伸,而在其他设备上看起来很好.
我已经设置了一个SurfaceView,我以编程方式调整以适应预览流大小的大小.
在Nexus 5上,这看起来不错,但一台三星设备就此消失了.此外,三星设备在预览的右侧部分有黑色边框.
是否真的无法使用SurfaceView,或者是时候切换到TextureView了?
我FileProvider在我的应用程序中使用。像往常一样,我<Provider>在AndroidManifest.xml文件中声明了标签,如下所示。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.jk.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)
当我在具有lollipop版本的android设备上运行它时,它工作正常。当我在kitkat版本上尝试时,它显示以下错误:
FATAL EXCEPTION: main
Process: com.jk.android.perfectphotoeditor2018, PID: 24992
java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.jk.android.perfectphotoeditor2018-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jk.android.perfectphotoeditor2018-2, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:5071)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4648)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4588)
at android.app.ActivityThread.access$1500(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1290)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:932)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:748)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class …Run Code Online (Sandbox Code Playgroud) android classnotfoundexception android-camera android-fileprovider
android ×10
android-camera ×10
camera ×1
image ×1
resolution ×1
surfaceview ×1
textureview ×1
usb ×1