- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试使用 OpenCV 访问 Android 相机。我成功创建了一个项目,并且运行没有任何问题。我尝试使用互联网上的代码并在我的项目中检查它。但是,应用程序停止了。这似乎是一个 RuntimeException 问题,但我不知道如何解决。这是我的代码,我从这个网站复制的http://people.oregonstate.edu/~robinsti/CS_496/Tutorial/ :
mainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnTouchListener, CameraBridgeViewBase.CvCameraViewListener2{
private CameraBridgeViewBase mOpenCvCameraView;
private Mat mRgba;
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.Surface);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
//mOpenCvCameraView.setMaxFrameSize(176, 152);
mOpenCvCameraView.setCvCameraViewListener(this);
}
private BaseLoaderCallback mLoaderCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
super.onManagerConnected(status);
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(MainActivity.this);
} break;
default: {
super.onManagerConnected(status);
} break;
}
}
};
@Override
public void onPause() {
super.onPause();
if(mOpenCvCameraView != null) {
mOpenCvCameraView.disableView();
}
}
@Override
public void onResume() {
super.onResume();
if(mOpenCvCameraView != null) {
mOpenCvCameraView.disableView();
}
}
@Override
public void onDestroy() {
super.onDestroy();
if(!OpenCVLoader.initDebug()) {
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0,this, mLoaderCallBack);
}
else {
mLoaderCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
@Override
public void onCameraViewStarted(int width, int height) {
}
@Override
public void onCameraViewStopped() {
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
return mRgba;
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
tools:context="com.tech.te.smartrotate.MainActivity">
<org.opencv.android.JavaCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/Surface" />
</RelativeLayout>
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=" ">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:name="android.hardware.camera.front"/>
<uses-feature android:name="android.hardware.camera.front.autofocus"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <!--android:theme="@style/AppTheme">-->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
日志猫:
07-29 15:54:44.066 31188-31188/com.tech.te.app W/art: Failed to find OatDexFile for DexFile /data/data/com.tech.te.app/files/instant-run/dex/slice-slice_2-classes.dex ( canonical path /data/data/com.tech.te.app/files/instant-run/dex/slice-slice_2-classes.dex) with checksum 0x7f90e189 in OatFile /data/data/com.tech.te.app/cache/slice-slice_2-classes.dex07-29 15:54:45.836 31188-31195/com.tech.te.app W/art: Suspending all threads took: 19.602ms07-29 15:54:45.946 31188-31188/com.tech.te.app D/DisplayManager: DisplayManager()07-29 15:54:46.376 31188-31188/com.tech.te.app W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable07-29 15:54:46.596 31188-31188/com.tech.te.app E/VdcInflateDelegate: Exception while inflating java.lang.RuntimeException: Failed to resolve attribute at index 1 at android.content.res.TypedArray.twGetColorStateList(TypedArray.java:437) at android.content.res.TypedArray.getColorStateList(TypedArray.java:419) at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:518) at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472) at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436) at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:708) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:348) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:181) at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:689) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:186) at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:77) at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:83) at android.support.v7.app.AppCompatDelegateImplV7.(AppCompatDelegateImplV7.java:146) at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:28) at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:41) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:193) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:173) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:511) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71) at android.app.Activity.performCreate(Activity.java:6112) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1117) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721) at android.app.ActivityThread.access$900(ActivityThread.java:168) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5753) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)07-29 15:54:46.596 31188-31202/com.tech.te.app I/art: Background sticky concurrent mark sweep GC freed 6652(1091KB) AllocSpace objects, 1(20KB) LOS objects, 14% free, 5MB/6MB, paused 36.125ms total 277.107ms07-29 15:54:46.616 31188-31202/com.tech.te.app I/art: Background sticky concurrent mark sweep GC freed 274(43KB) AllocSpace objects, 0(0B) LOS objects, 14% free, 5MB/6MB, paused 7.366ms total 16.707ms07-29 15:54:46.706 31188-31188/com.tech.te.app D/AndroidRuntime: Shutting down VM07-29 15:54:46.716 31188-31188/com.tech.te.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.tech.te.app, PID: 31188 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tech.te.app/com.tech.te.app.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2656) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721) at android.app.ActivityThread.access$900(ActivityThread.java:168) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5753) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:343) at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312) at android.support.v7.app.AppCompatDelegateImplV7.onPostCreate(AppCompatDelegateImplV7.java:167) at android.support.v7.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:98) at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1198) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2638) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721) at android.app.ActivityThread.access$900(ActivityThread.java:168) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5753) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 07-29 15:54:50.366 31188-31188/com.tech.te.app I/Process: Sending signal. PID: 31188 SIG: 9
非常感谢。
最佳答案
您正在 OnDestroy 上加载 OpenCV,您不应该这样做。
@Override
public void onDestroy() {
super.onDestroy();
if(!OpenCVLoader.initDebug()) {
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0,this, mLoaderCallBack);
}
else {
mLoaderCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
此外,您不应同时使用 initDebug 和 initAsync。
initDebug 用于静态初始化,您的 apk 中需要有这些库。
initAsync 与安装的 OpenCV Manager 一起使用。
对于静态初始化,有一个很好的答案Here
onResume、onPause 和 onDestroy 应该像这样:
@Override
protected void onResume()
{
super.onResume();
_javaCameraView.enableView();
}
@Override
protected void onPause() {
if (_javaCameraView != null) {
_javaCameraView.disableView();
}
super.onPause();
}
@Override
public void onDestroy() {
if (_javaCameraView != null) {
_javaCameraView.disableView();
}
super.onDestroy();
}
有关静态初始化的一些信息:
public class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener2 {
private static boolean openCVStarted = false;
JavaCameraView _javaCameraView;
static{
System.loadLibrary("opencv_java3");
if(!OpenCVLoader.initDebug()) {
Log.d("ERROR", "Unable to load OpenCV");
openCVStarted = false;
} else {
Log.d("SUCCESS", "OpenCV loaded");
openCVStarted = true;
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_javaCameraView = (JavaCameraView)findViewById(R.id.cameraView);
//_javaCameraView.setMaxFrameSize(size.width, size.height);
_javaCameraView.setVisibility(SurfaceView.VISIBLE);
_javaCameraView.setCvCameraViewListener(this);
_javaCameraView.enableView();
_javaCameraView.enableFpsMeter();
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame)
{
_imgBgrTemp = inputFrame.rgba();
// Work with the frame here
return _imgBgrTemp;
}
关于java - OpenCV 和 Android Studio : "unfortunately app has stopped",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38659283/
我是一个初学者,我需要一些建议。当我尝试在 Android 模拟器中运行以下 Android 应用程序时,当我尝试运行它时,它显示“不幸的是,再次已关闭”。 我不确定为什么它不起作用。 有人可以给我建
我正在尝试在 Android Studio 中制作一个应用程序,它要求您将文件下载到用户设备上的 sdcard/Download/文件夹中。问题是,当我输入要下载的 URL 并单击“下载”时,应用程序
自上次更新我的 Android Studio 和我的 SDK 包以来,每当我启动模拟器时都会收到此错误。请检查下面的屏幕截图。 我的 logcat 将这些报告为错误语句: 06-11 05:18:22
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
这个问题在这里已经有了答案: Unfortunately MyApp has stopped. How can I solve this? (22 个回答) 3年前关闭。 我用我在 github 上找
在我的应用程序中单击图像按钮时,我总是收到消息:“不幸的是,myapp已停止”。问题是什么??? 这是我的代码。单击图像按钮将调用showImageDialog方法: public class Rem
我是个新人,正在从新的波士顿学习编码。 MainActivity.java: package com.tipsoftech.fastfart; import android.app.Activity;
我是 Android 应用程序和 Java 的新手,一直在制作一个简单的应用程序,一切都很顺利,直到我打开模拟器并出现以下错误“不幸的是,您的应用程序已停止”。这是我的主要 Activity.java
我是 Android 应用程序开发新手,我尝试编写我的第一个简单应用程序来尝试在 Activity 之间发送数据。代码已编译,我尝试在虚拟设备上启动它,但正如标题所示,它停止了。 这是 logcat
这是我的第一个应用程序。我所需要的只是五个按钮,其中两个用于调用某些电话号码(到目前为止只创建了一个),三个按钮用于将用户带到某个 URL。我没有收到任何错误或警告,也没有任何有关如何导航 LogCa
运行应用程序时收到以下错误: 02-09 18:01:19.582: D/AndroidRuntime(1306): Shutting down VM 02-09 18:01:19.582: W/da
我是 Android 编程新手。我正在遵循 youtube 上的 Android 教程指南。这是我们的论文。 这是主 Activity package com.example.abrico.viola
我正在尝试为 android 编写一个基本的绘图 Android 应用程序并在 Genymotion 上测试它,但我无法单击应用程序图标(它显示“不幸的是 [app] 已停止。”) 我不确定这三个私有
你好,我在运行应用程序时遇到问题,当它运行不正常时,它会打开,但是当我按下按钮时,告诉我应用程序已停止并且无法运行:“不幸的是,应用程序已停止”。这是我的简单代码,我希望我能尽快得到答案......谢
我的应用程序只工作一次,在第二次运行时(和其他...)我得到“不幸的是,我的应用程序已停止”。我已经尝试了很多,但对我没有任何影响。这是代码: 主要 Activity : 包 com.example.
你好,我是新编程,这是我的第一个应用程序,我试图重新创建一个我找到教程的应用程序。是一个小费计算器,应用程序打开没有问题,但当我尝试使用它时,它停止工作并关闭。 XML代码是 package com.
当我使用模拟器运行我的 Android 应用程序时,它运行良好,在我的手机上也是如此,但在另一部手机上,尝试运行该应用程序时,我总是得到“不幸的是 [...] 已停止”错误。我如何找出这个错误的原因(
我想将位图实现到surfaceview,并尝试在单击时通过按钮编辑图像。但有一个问题。当我在模拟器上运行它时,一切都是正确的,直到按下按钮。 “不幸的是,......停止......”出现在屏幕上,程
我的应用程序运行正常! 当运行android应用程序编译无误,但在显示时返回消息。 Unfortunately, application has stopped 当我安装并链接这两个包时发生了 rea
这是一个食物食谱应用程序,我只是在学习,所以如果你能帮我纠正我的错误并解释,我将非常感激。提前致谢 主要 Activity package rice.recipe; import android.ap
我是一名优秀的程序员,十分优秀!