Saltar para conteúdo


Foto
- - - - -

Capturar Comandos de um controle Remoto [BROADCAST RECEIVERS ]

java android tv

  • Por favor inicie sessão para responder
1 resposta a este tópico

#1 MrEdward

MrEdward

    Novato

  • Membros
  • Pip
  • 3 mensagens
  • Mac Os, TV Sony

Mensagem publicada 14 November 2016 - 14:52

Galera, estamos fazendo um aplicativo utilizando a Leanback Library para Android TV e preciso saber como ter acesso e reconhecer alguns comandos de um controle remoto. O aplicativo rodará em segundo plano em determinado momento e ao comando do controle deve surgir uma tela. Para rodar em 2o plano BroadCast Receivers acredito que já resolva mas reconhecer os comandos ou numeros do controle remoto já procurei muito , pesquisei e quase não achei nada sobre o assunto apenas tive a ideia de usar BROADCAST RECEIVERS COMO SEGUE:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <receiver android:name=".Receiver.BroadcastReceiverControleRemoto"

        android:enabled="true"
        android:exported="false">

        <intent-filter>

            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />

        </intent-filter>

    </receiver>

package com.example.diego.Receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import com.example.diego.View.CadastrarCanalActivity;


/**
 * Created by Eduardo on 10/11/16.
 */

public class BroadcastReceiverControleRemoto extends BroadcastReceiver implements  View.OnKeyListener {

    Boolean ativar;

    public void onReceive(Context c, Intent intent) {


        ativar = getAtivar();


        if (ativar == true) {

            Intent i = new Intent(c, CadastrarCanalActivity.class);
            c.startActivity(i);

        }

    }

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_0) {
            ativar = true;
            return true;

        } else {
           ativar = false;
            return false;
        }

    }

    public Boolean getAtivar() {
        return ativar;
    }

    public void setAtivar(Boolean ativar) {
        this.ativar = ativar;
    }
}


Este é o código usando BROADCAST RECEIVERS para ativar uma tela ao pressionar o numero "0" no controle da TV, mas não está funcionando, sem o receiver pega , mas precisa estar em segundo plano e ser ativado.......

 

 


  • Randjem gosta disto

#2 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 21 November 2016 - 14:31

nao tenho a certeza absoluta de como se faz no android tv, mas no android nao é preciso broadcasts para apanhar o click do comando, basta o listener para o keyup e botom

 

queres apanhar isso com a app "desligada", mas a correr em background, tipo um servico que esta a correr em background e apanha os clicks do comando?

por acaso fiquei curioso a ver se dá para fazer, vou investigar um bocadito