java - android 应用程序中的红外线实现导致它崩溃

标签 java android infrared

如果我取消注释我的方法 sendIrCode 中的任何代码,那么我的应用程序将在按下按钮时崩溃,该按钮运行方法 sendIrCode。虽然采用这种格式,但我可以获得 We have liftoff 和 Ultra liftoff 打印到屏幕上,但就像我之前说的那样,一旦我取消注释传输它就会崩溃。我已经尝试在两部不同的手机上运行这段代码,并且都可以使用 hasiremitter() 方法并像他们应该的那样返回 true,但这是我能够正常工作的 ConsumerIrManager 的唯一功能,任何帮助将不胜感激。

我还逐字使用了此链接中的代码位,没有任何变化。 https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/hardware/ConsumerIr.java

package com.konecnytechsolutions.ledremote;

import android.content.Context;
import android.hardware.ConsumerIrManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

import org.w3c.dom.Text;


public class MainActivity extends ActionBarActivity {

ConsumerIrManager mCIR;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mCIR = (ConsumerIrManager)getSystemService("consumer_ir");

    setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void sendIrCode(View view) {

    int[] pattern = {338,169,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,21,21,63,21,63,21,63,21,63,21,63,21,63,21,21,21,63,21};

    //mCIR.transmit(37500, pattern);
    int button_id = Integer.parseInt(view.getTag().toString());

        //noinspection ResourceType
        mCIR = (ConsumerIrManager) getSystemService(Context.CONSUMER_IR_SERVICE);

        if (mCIR.hasIrEmitter() == true) {
            TextView textView = (TextView) findViewById(R.id.textView);
            textView.setText("WE HAVE LIFTOFF!");

            switch (button_id) {
                case 1:
                    //IRBlaster.transmit(37500, pattern);
                    textView.setText("UltraLiftoff");
                    break;

                default:
                    break;
            }

        }
}
}

日志

01-27 01:10:50.336  24709-24709/com.konecnytechsolutions.ledremote I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file.
01-27 01:10:50.346  24709-24709/com.konecnytechsolutions.ledremote I/SELinux﹕ Function: selinux_android_load_priority , spota verifySig and checkHash pass. priority version is VE=SEPF_SAMSUNG-SM-G900A_4.4.2_0034
01-27 01:10:50.346  24709-24709/com.konecnytechsolutions.ledremote I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
01-27 01:10:50.346  24709-24709/com.konecnytechsolutions.ledremote E/dalvikvm﹕ >>>>> Normal User
01-27 01:10:50.346  24709-24709/com.konecnytechsolutions.ledremote E/dalvikvm﹕ >>>>> com.konecnytechsolutions.ledremote [ userId:0 | appId:10239 ]
01-27 01:10:50.346  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ Late-enabling CheckJNI
01-27 01:10:50.486  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ Sending WAIT chunk
01-27 01:10:50.486  24709-24715/com.konecnytechsolutions.ledremote D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
01-27 01:10:50.486  24709-24709/com.konecnytechsolutions.ledremote W/ActivityThread﹕ Application com.konecnytechsolutions.ledremote is waiting for the debugger on port 8100...
01-27 01:10:52.186  24709-24715/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Debugger is active
01-27 01:10:52.286  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ Debugger has connected
01-27 01:10:52.286  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:52.486  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:52.686  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:52.886  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:53.086  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:53.286  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:53.486  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:53.686  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:53.886  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:54.086  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ waiting for debugger to settle...
01-27 01:10:54.286  24709-24709/com.konecnytechsolutions.ledremote I/System.out﹕ debugger has settled (1302)
01-27 01:10:54.316  24709-24709/com.konecnytechsolutions.ledremote I/PersonaManager﹕ getPersonaService() name persona_policy
01-27 01:10:54.376  24709-24709/com.konecnytechsolutions.ledremote I/PersonaManager﹕ getPersonaService() name persona_policy
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ VFY: unable to resolve virtual method 11347: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ VFY: unable to resolve virtual method 11353: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ VFY: unable to resolve virtual method 9041: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll ()V
01-27 01:10:54.416  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000e
01-27 01:10:54.426  24709-24709/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
01-27 01:10:54.426  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ VFY: unable to resolve virtual method 364: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
01-27 01:10:54.426  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
01-27 01:10:54.436  24709-24709/com.konecnytechsolutions.ledremote I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
01-27 01:10:54.436  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ VFY: unable to resolve virtual method 386: Landroid/content/res/TypedArray;.getType (I)I
01-27 01:10:54.436  24709-24709/com.konecnytechsolutions.ledremote D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
01-27 01:10:54.436  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:72 height:72 bitmap id is 270
01-27 01:10:54.446  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:42 height:126 bitmap id is 271
01-27 01:10:54.446  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:18 height:18 bitmap id is 272
01-27 01:10:54.456  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:18 height:18 bitmap id is 273
01-27 01:10:54.456  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:18 height:18 bitmap id is 274
01-27 01:10:54.476  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:72 height:72 bitmap id is 275
01-27 01:10:54.476  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:72 height:72 bitmap id is 276
01-27 01:10:54.516  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 277
01-27 01:10:54.516  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 278
01-27 01:10:54.526  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 279
01-27 01:10:54.526  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 280
01-27 01:10:54.526  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 281
01-27 01:10:54.536  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 282
01-27 01:10:54.536  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 283
01-27 01:10:54.536  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 284
01-27 01:10:54.546  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 285
01-27 01:10:54.546  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:48 height:48 bitmap id is 286
01-27 01:10:55.236  24709-24709/com.konecnytechsolutions.ledremote I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build:  ()
    OpenGL ES Shader Compiler Version: E031.24.00.08
    Build Date: 02/20/14 Thu
    Local Branch: AU200_patches_ms_memleak_libsc_profiler
    Remote Branch:
    Local Patches:
    Reconstruct Branch:
01-27 01:10:55.276  24709-24709/com.konecnytechsolutions.ledremote D/OpenGLRenderer﹕ Enabling debug mode 0
01-27 01:10:55.316  24709-24709/com.konecnytechsolutions.ledremote D/skia﹕ GFXPNG PNG bitmap created width:72 height:72 bitmap id is 287
01-27 01:11:20.506  24709-24709/com.konecnytechsolutions.ledremote D/AndroidRuntime﹕ Shutting down VM
01-27 01:11:20.506  24709-24709/com.konecnytechsolutions.ledremote W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41712da0)
01-27 01:11:20.536  24709-24709/com.konecnytechsolutions.ledremote E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.konecnytechsolutions.ledremote, PID: 24709
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3969)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5579)
            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:1268)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5579)
            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:1268)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.SecurityException: Requires TRANSMIT_IR permission
            at android.os.Parcel.readException(Parcel.java:1465)
            at android.os.Parcel.readException(Parcel.java:1419)
            at android.hardware.IConsumerIrService$Stub$Proxy.transmit(IConsumerIrService.java:120)
            at android.hardware.ConsumerIrManager.transmit(ConsumerIrManager.java:85)
            at com.konecnytechsolutions.ledremote.MainActivity.sendIrCode(MainActivity.java:56)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5579)
            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:1268)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
            at dalvik.system.NativeStart.main(Native Method)
01-27 01:12:02.346  24709-24709/com.konecnytechsolutions.ledremote I/Process﹕ Sending signal. PID: 24709 SIG: 9

因此 API 文档甚至没有暗示您需要请求 Ifrared 许可这一事实,因此通过在我的 list 文件中看到它,我能够解决我的问题

http://developer.android.com/reference/android/Manifest.permission.html#TRANSMIT_IR

最佳答案

你的问题里面有答案:

 Caused by: java.lang.SecurityException: Requires TRANSMIT_IR permission

将权限放在您的 list 中;)

关于java - android 应用程序中的红外线实现导致它崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28166636/

相关文章:

java - jbehave 核心发行版和 Web 发行版之间有什么区别?

java - Android:OpenGL:glGenTextures 在构造函数中不起作用?

android - 将 JUnit 测试结果和代码覆盖率上传到 Sonar

android - 从 android 相机图像中过滤红外源

Java - HttpURLConnection - 请求 header 中未显示内容长度

java - 为什么无法从 DolphinDB GUI 中看到我通过 JAVA API 创建的内存表?

java - Android ArrayAdapter NullPointerException getID

android - 为 Android Switch 文本设置阴影

红外相机的 OpenCV 立体校准

iphone - iOS 和红外线