Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android HTC IR API棒棒糖_Android_Android 5.0 Lollipop_Infrared - Fatal编程技术网

Android HTC IR API棒棒糖

Android HTC IR API棒棒糖,android,android-5.0-lollipop,infrared,Android,Android 5.0 Lollipop,Infrared,在棒棒糖更新后,我正试图让红外发射器在HTC ONE m8上工作。我正在尝试使用这里找到的HTC Sense IR SDK(addon-HTC_IR_api-HTC-19):我导入示例项目(HTCConsumerIR)并在我的HTC设备上运行应用程序,而该应用程序根本不传输信号。我没有收到任何错误,但红外发射器甚至没有打开。这是同一个项目,没有任何修改。为什么它不起作用?任何一个在HTC工作的人的帮助都是非常合适的。除HTC外,它可以在所有设备上使用红外线 以下是主类的代码(如果有帮助的话):

在棒棒糖更新后,我正试图让红外发射器在HTC ONE m8上工作。我正在尝试使用这里找到的HTC Sense IR SDK(addon-HTC_IR_api-HTC-19):我导入示例项目(HTCConsumerIR)并在我的HTC设备上运行应用程序,而该应用程序根本不传输信号。我没有收到任何错误,但红外发射器甚至没有打开。这是同一个项目,没有任何修改。为什么它不起作用?任何一个在HTC工作的人的帮助都是非常合适的。除HTC外,它可以在所有设备上使用红外线

以下是主类的代码(如果有帮助的话):

      public class OneCIRActivity extends Activity {

    private final static String TAG = "OneCIR";
    private boolean running;

    ConsumerIrManagerCompat mCIR;
    Button btnLearn, btnSend, btnSendByIRManager, btnStart, btnStop;
    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_onecir);

        btnStart = (Button)findViewById(R.id.buttonstart);
        //        btnStart.setOnClickListener(btnStartListener); //HTC optional (see onResume())
        //        btnStart.setText("CIRControl.start");
        btnStart.setVisibility(View.GONE);

        btnLearn = (Button)findViewById(R.id.buttonlearn);
        btnLearn.setOnClickListener(btnLearnListener);
        btnLearn.setText("Learn IR"); //HTC

        btnSend = (Button)findViewById(R.id.buttonsend);
        btnSend.setOnClickListener(btnSendIRListener);
        btnSend.setText("Send IR"); //BOTH

        btnStop = (Button)findViewById(R.id.buttonstop);
        //        btnStop.setOnClickListener(btnStopListener); //HTC optional 
        //        btnStop.setText("CIRControl.stop");
        btnStop.setVisibility(View.GONE);

        textView = (TextView)findViewById(R.id.textview1);

        mCIR = ConsumerIrManagerCompat.createInstance(getApplicationContext());

        mCIR.start(); //for HTC - noop otherwise (also see onResume()/onPause() )

        mCIR.setTextView(textView); // to pass errors to UI

        updateUI();
    }


    public void updateUI() {
        if (mCIR != null) {
            if (mCIR.hasIrEmitter()) {
                    if((mCIR.supportedAPIs|ConsumerIrManagerCompat.HTCSUPPORT)!=0) {
                        btnLearn.setEnabled(true);
                    } else {
                        btnLearn.setEnabled(false);
                    }
                    btnSend.setEnabled(true);
            } else {
                btnLearn.setEnabled(false);
                btnSend.setEnabled(false);
            }

        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //getMenuInflater().inflate(R.menu.activity_onecir, menu);
        return true;
    }

    private OnClickListener btnLearnListener = new OnClickListener() {
        public void onClick(View v) {
            //Use this HTC API to learn any IR function from remote controller
            mCIR.learnIRCmd(10); // set 10sec timeout
            textView.setText("Learning for 10 seconds");
        }       
    };

    @Override
    protected void onResume() {
        super.onResume();
        if(!mCIR.isStarted()) {
            mCIR.start(); //needed for HTC API (noop otherwise) before calling other APIs
        }
    }
    @Override
    protected void onPause() {
        super.onPause();
        if(mCIR.isStarted()) {
            mCIR.stop(); //needed for HTC API (noop otherwise)
        }
    }

    private OnClickListener btnSendIRListener = new OnClickListener() {

        public void onClick(View v) {

            if (!running) {
                btnSend.setEnabled(false);
                running = true;
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        SharedPreferences preferences = getSharedPreferences(ConsumerIrManagerCompat.PREFERENCE_FILE_NAME, Context.MODE_PRIVATE);
                        // default IR data example from a laptop's ir remote: right button
                        int[] frame = {340,172,22,22,22,65,22,65,22,65,22,22,22,65,22,65,22,65,22,65,22,65,22,64,22,23,22,22,22,22,22,23,22,65,22,22,22,65,22,65,22,22,22,22,22,22,22,22,22,23,22,22,22,22,22,22,22,64,22,22,22,22,22,22,22,23,22,1600,341,86,22,3677,341,86,22,367};
                        int frequency = preferences.getInt(ConsumerIrManagerCompat.PREFERENCE_KEY_FREQUENCY, 38000);
                        // otherwise use last learned code
                        String framesaved = preferences.getString(ConsumerIrManagerCompat.PREFERENCE_KEY_FRAME, null);
                        if(framesaved!=null ) {
                            StringTokenizer tok = new StringTokenizer(framesaved.substring(1, framesaved.length()-2), ",");
                            int num = tok.countTokens();
                            if(num>0) {
                                frame = new int[num];
                                int index = 0;
                                while (tok.hasMoreTokens()) {
                                    frame[index++] = Integer.parseInt(tok.nextToken().trim());
                                }
                            }
                        }

                        mCIR.transmit(frequency, frame);

                        try {
                            Thread.sleep(500);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        running = false;
                        runOnUiThread(new Runnable() { public void run() {btnSend.setEnabled(true);}});
                    }
                }).start();
            }
        }
    };    
/*
    private OnClickListener btnStartListener = new OnClickListener() {
        public void onClick(View v) {
            //HTC CIR commands are only allowed after using this start() method.
            mCIR.start();
            text1.setText("Attached to CIR control service");
            updateUI();
        }

    };
    private OnClickListener btnStopListener = new OnClickListener() {
        public void onClick(View v) {
            //TODO: before doing this, developer must make sure pending CIR commands.
            //will be handled if they had been sent to HTC CIR. 
            mCIR.stop();
            text1.setText("Detached from CIR control service");
            updateUI();
        }
    };
*/
    //TODO: HTC: Use this method to cancel sending IR command and learning IR command
    // Example: Before learning IR activity finishes, cancel command can stop it.
    // Example: If send an IR command with repeat count 255, cancel command can stop it. 
    //
    // mCIR.cancelCommand();

HtcConsumerIr应用程序在棒棒糖上不起作用,因为它只在你有KitKat的情况下使用HTC库。 如果打开ConsumerManager compat.java并更改此行:

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT
                              && hasPackage("com.htc.cirmodule", context)) {
        return new ConsumerIrManagerHtc(context);
    } else {
        return new ConsumerIrManagerBase(context);
    }
它会起作用的

升级到棒棒糖后,我正在尝试让我的应用程序重新工作。它在KitKat中运行良好,无需使用HTC库。
我还没有让它完全工作,但我已经让它传送了。看来我们又开始使用脉冲计数而不是持续时间了。

这可能会有帮助:他说要使用htc api,这正是我想做的,但我想不出来:(
if (hasPackage("com.htc.cirmodule", context)) {
        return new ConsumerIrManagerHtc(context);
    } else {
        return new ConsumerIrManagerBase(context);
    }