FMUSER Transmitir vídeo e áudio sem fio mais fácil!

[email protegido] WhatsApp + 8618078869184
Língua

    Explicação detalhada da transmissão no Android

     

    A transmissão é dividida em dois tipos diferentes: "Transmissões normais" e "Transmissões ordenadas". A transmissão comum é totalmente assíncrona e pode ser recebida por todos os receptores de transmissão ao mesmo tempo (logicamente). A eficiência da entrega da mensagem é relativamente alta, mas a desvantagem é que o receptor não pode passar o resultado do processamento para o próximo receptor e ele não pode ser encerrado. Propagação de intenção de difusão; no entanto, a transmissão ordenada é baseada na prioridade declarada pelo receptor (declarada no atributo android: priority do elemento intent-filter, quanto maior o número, maior a prioridade, o intervalo de valores: -1000 a 1000. Também é possível Chame setPriority () do objeto IntentFilter para definir) e o destinatário receberá a transmissão por sua vez. Por exemplo, se o nível de A for mais alto do que o de B e o nível de B for mais alto do que C, a transmissão é primeiro transmitida para A, depois para B e, finalmente, para C. Depois que A obtém a transmissão, pode armazenar dados na transmissão. Quando a transmissão é enviada para B, B pode obter os dados armazenados por A a partir da transmissão.

     

    Context.sendBroadcast ()

       O que é enviado é uma transmissão comum e todos os assinantes têm a oportunidade de obtê-la e processá-la.

     

    Context.sendOrderedBroadcast ()

       O envio é uma transmissão ordenada. O sistema executará os receptores um a um de acordo com a prioridade declarada pelo receptor. O receptor anterior tem o direito de encerrar a transmissão (BroadcastReceiver.abortBroadcast ()). Se a transmissão for encerrada pelo receptor anterior, o último O receptor não poderá mais obter a transmissão. Para transmissão ordenada, o receptor anterior pode armazenar o resultado do processamento no Intent de transmissão e, em seguida, passá-lo para o próximo receptor.

     
    O receptor de transmissão (BroadcastReceiver) é usado para receber Intent de transmissão, e o envio de Intent de transmissão é realizado chamando Context.sendBroadcast () e Context.sendOrderedBroadcast (). Normalmente, um Intent de transmissão pode ser recebido por vários receptores de transmissão inscritos para este Intent. Este recurso é semelhante aos receptores de mensagens de tópico no JMS. Para implementar um método de receptor de transmissão é o seguinte:

     

    A primeira etapa: definir o receptor de transmissão, herdar BroadcastReceiver e reescrever o método onReceive ().

    classe pública IncomingSMSReceiver estendeBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Etapa 2: inscreva-se na intenção de transmissão da transmissão, existem dois métodos de inscrição:

    O primeiro tipo: use o código para se inscrever (assinatura dinâmica)

    Filtro IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (receptor, filtro);

     

    O segundo tipo: Inscreva-se no nó no arquivo AndroidManifest.xml (assinatura estática)


      
           
      


    Vamos dar uma olhada na diferença entre assinatura de transmissão dinâmica e assinatura de transmissão estática:
    A transmissão por assinatura estática também é chamada de transmissão residente. Quando seu aplicativo é fechado, se houver uma mensagem de broadcast, o receptor de broadcast que você escreveu também pode recebê-la. Seu método de registro é AndroidManifast em seu aplicativo. .xml para assinatura.

     

    A transmissão por assinatura dinâmica também é chamada de transmissão não residente. Quando o aplicativo terminar, a transmissão irá desaparecer naturalmente. Por exemplo, você assina a transmissão em onCreate ou onResume na atividade e deve cancelar a assinatura de transmissão em onDestory ou onPause. Caso contrário, uma exceção será relatada, portanto, seu receptor de transmissão será um não residente.

     

    Há mais um detalhe aqui que são os dois métodos de assinatura. Ao enviar broadcasts, você precisa prestar atenção a: O método de intenção implícita é usado para registro dinâmico, portanto, você precisa usar a intenção implícita para enviar ao enviar broadcasts. , Caso contrário, o receptor da transmissão não será capaz de receber a transmissão. Preste atenção a este ponto. Mas ao se inscrever estaticamente, porque é inscrito em AndroidMainfest.xml, é possível usar o intent de exibição e o intent implícito ao enviar transmissões (claro que isso é apenas para receptores de transmissão definidos por nós), então, apenas no caso, geralmente usamos implícito Intenção de enviar transmissão.

     

    Vejamos um exemplo:

    Dê uma olhada na estrutura do projeto:

     

    Dê uma olhada na transmissão de assinatura estática:
    pacote com.broadcast.demo;

    importar android.app.Activity;
    importar android.content.Intent;
    importar android.os.Bundle;
    importar android.view.View;
    importar android.view.View.OnClickListener;
    importar android.widget.Button;

    importar com.example.androidbroadcastdemo.R;

    / **
     * Transmissão de assinatura estática
     * @autor weijiang204321
     *
     */
    public class StaticRegisterBroadcastActivity estende Activity {

    @ Override
    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Botão btn = (Botão) findViewById (R.id.btn);
    Para
    btn.setOnClickListener (new OnClickListener () {
    @ Override
    public void onClick (Ver v) {
    // Use uma forma estática para registrar a transmissão, você pode usar a intenção de exibição para enviar a transmissão
    Transmissão de intenção = nova intenção ("com.broadcast.set.broadcast");
    sendBroadcast (broadcast, null);
    }
    Para
    });
    }
    Para
    }


    Inscreva-se em AndroidMainfest.xml:



    <manifesto xmlns:android="
    http://schemas.android.com/apk/res/android"
        package = "com.example.androidbroadcastdemo"
        android: versionCode = "1"
        android: versionName = "1.0">

        <usa-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <aplicativo
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <atividade
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Não se preocupe com o outro conteúdo por enquanto, como falaremos mais tarde, aqui nos concentramos apenas no registro de transmissões estáticas


          
               
                   
               
           


    Vamos dar uma olhada no receptor da transmissão:

    pacote com.broadcast.receptor;

    importar android.content.BroadcastReceiver;
    importar android.content.Context;
    importar android.content.Intent;
    importar android.util.Log;

    / **
     * Receptor de radiodifusão
     * @autor weijiang204321
     *
     */
    public class UnSortBroadcastReceiver estende BroadcastReceiver {

    @ Override
    public void onReceive (Context context, Intent intent) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    A lógica do método onReceive no broadcast receiver é muito simples, que consiste em imprimir o conteúdo da Action.
    Execute o programa, o resultado é muito simples, aqui não é a imagem.

     

    Vamos dar uma olhada nas assinaturas dinâmicas:


    pacote com.broadcast.demo;

    importar android.app.Activity;
    importar android.content.Intent;
    importar android.content.IntentFilter;
    importar android.os.Bundle;
    importar android.view.View;
    importar android.view.View.OnClickListener;
    importar android.widget.Button;

    importar com.broadcast.receiver.UnSortBroadcastReceiver;
    importar com.example.androidbroadcastdemo.R;

    / **
     * Use uma maneira dinâmica de registrar a transmissão
     * @autor weijiang204321
     *
     */
    public class DynamicRegisterBroadcastActivity estende Activity {
    Para
    public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    receptor UnSortBroadcastReceiver protegido;
    Para
    @ Override
    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Botão btn0 = (Botão) findViewById (R.id.btn);
    btn0.setOnClickListener (new OnClickListener () {
    public void onClick (Ver v) {
    // Enviar transmissão
    Intent it = novo Intent (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @ Override
    protected void onResume () {
    super.onResume ();
    // Registre-se para transmissão
    IntentFilter counterActionFilter = new IntentFilter (NEW_LIFEFORM_DETECTED);
    receptor = novo UnSortBroadcastReceiver ();
    registerReceiver (receptor, counterActionFilter);
    }

    @ Override
    protected void onPause () {
    super.onPause ();
    // Cancelar transmissão
    unregisterReceiver (receptor);
    }
    }
    Aqui, estamos assinando uma transmissão em onResume e cancelando a assinatura em onPause.
    Altere a Activity lançada para DynamicRegisterBroadcastActivity em AndroidMainfest.xml. O outro conteúdo não precisa ser modificado. Rodar o programa e imprimir o resultado é muito simples, então não vou ver a foto aqui.

     

    Vamos dar uma olhada na transmissão ordenada e na transmissão não-ordenada

    Já mencionamos isso no início, vamos dar uma olhada na transmissão desordenada:

    Primeiro, definimos dois receptores de transmissão:

    O primeiro receptor de transmissão:


    pacote com.broadcast.receptor;

    importar android.content.BroadcastReceiver;
    importar android.content.Context;
    importar android.content.Intent;
    importar android.util.Log;

    / **
     * Receptor de transmissão A
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverA extends BroadcastReceiver {

    @ Override
    public void onReceive (Context context, Intent intent) {
    Log.e ("Demo:", "broadcast receiver A");
    }

    }
    O segundo receptor de transmissão:

    pacote com.broadcast.receptor;

    importar android.content.BroadcastReceiver;
    importar android.content.Context;
    importar android.content.Intent;
    importar android.util.Log;

    / **
     * Receptor de transmissão B
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverB extends BroadcastReceiver {

    @ Override
    public void onReceive (Context context, Intent intent) {
    Log.e ("Demonstração:", "Transmissão B");
    }

    Para
    Para
    }


    Inscreva-se para transmitir em AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    resultado da operação:


    O resultado da corrida é um pouco estranho. Por que o receptor B está na frente e o receptor A atrás? O motivo é que, quando assinamos a transmissão em AndroidMainfest.xml, definimos o valor do atributo android: priority no intent-filter. Quanto maior for o valor, maior será a prioridade. , A prioridade do receptor B é 1000, a prioridade do receptor A é 999, então B recebe a transmissão primeiro e, em seguida, A recebe, mas não há conexão entre o receptor B e o receptor A e não pode haver interação Sim, como esta é uma transmissão fora de ordem e assíncrona, podemos fazer uma experiência adicionando código ao método onReceiver em B:

    abortBroadcast (); // Encerrar a transmissão desta transmissão

    resultado da operação:

     

    Podemos ver o erro de prompt, ou seja, a transmissão não ordenada não tem permissão para encerrar a transmissão. Na verdade, a terminação é inútil, porque o receptor A ainda recebe a transmissão.

     

    Vamos dar uma olhada na transmissão ordenada, o código precisa ser modificado:

    A primeira é ao enviar uma transmissão:


    Transmissão de intenção = nova intenção ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (broadcast, null);
    Em seguida, adicione um método para encerrar a transmissão no receptor B:
    abortBroadcast ();

    O outro código não precisa ser modificado, o resultado da operação:

     

    Existe apenas o receptor B, o receptor A não recebe a transmissão, porque a transmissão é encerrada no receptor B e os receptores subsequentes não podem aceitá-la.

    Modifique o código abaixo:

    Destinatário B:


    pacote com.broadcast.receptor;

    importar android.content.BroadcastReceiver;
    importar android.content.Context;
    importar android.content.Intent;
    importar android.os.Bundle;
    importar android.util.Log;

    / **
     * Receptor de transmissão B
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverB extends BroadcastReceiver {

    @ Override
    public void onReceive (Context context, Intent intent) {
    Log.e ("Demo:", "broadcast receiver B");
    Bundle bundle = novo Bundle ();
    bundle.putString ("next_receiver", "próximo receptor de transmissão");
    setResultExtras (pacote);
    }
    Para
    }
    Depois que B recebe a transmissão, ele armazena algum valor e o passa para o próximo receptor.


    Código do receptor A:


    pacote com.broadcast.receive

     

     

     

     

    Liste todos os Pergunta

    Alcunha/Nickname

    E-mail

    Frequentes

    Nosso outro produto:

    Pacote de equipamento de estação de rádio profissional FM

     



     

    Solução de IPTV para hotéis

     


      Digite o e-mail para obter uma surpresa

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Afrikaans
      sq.fmuser.org -> albanês
      ar.fmuser.org -> árabe
      hy.fmuser.org -> armênio
      az.fmuser.org -> Azerbaijão
      eu.fmuser.org -> Basco
      be.fmuser.org -> bielorrusso
      bg.fmuser.org -> búlgaro
      ca.fmuser.org -> catalão
      zh-CN.fmuser.org -> Chinês (simplificado)
      zh-TW.fmuser.org -> chinês (tradicional)
      hr.fmuser.org -> croata
      cs.fmuser.org -> checo
      da.fmuser.org -> dinamarquês
      nl.fmuser.org -> holandês
      et.fmuser.org -> estoniano
      tl.fmuser.org -> filipino
      fi.fmuser.org -> finlandês
      fr.fmuser.org -> francês
      gl.fmuser.org -> galego
      ka.fmuser.org -> georgiano
      de.fmuser.org -> alemão
      el.fmuser.org -> grego
      ht.fmuser.org -> crioulo haitiano
      iw.fmuser.org -> hebraico
      hi.fmuser.org -> Hindi
      hu.fmuser.org -> húngaro
      is.fmuser.org -> islandês
      id.fmuser.org -> indonésio
      ga.fmuser.org -> irlandês
      it.fmuser.org -> italiano
      ja.fmuser.org -> Japonês
      ko.fmuser.org -> coreano
      lv.fmuser.org -> letão
      lt.fmuser.org -> Lituano
      mk.fmuser.org -> macedônio
      ms.fmuser.org -> malaio
      mt.fmuser.org -> maltês
      no.fmuser.org - norueguês
      fa.fmuser.org -> persa
      pl.fmuser.org -> polonês
      pt.fmuser.org -> português
      ro.fmuser.org -> romeno
      ru.fmuser.org -> russo
      sr.fmuser.org -> Sérvio
      sk.fmuser.org -> Eslovaco
      sl.fmuser.org -> esloveno
      es.fmuser.org -> espanhol
      sw.fmuser.org -> Swahili
      sv.fmuser.org -> sueco
      th.fmuser.org -> Tailandês
      tr.fmuser.org -> turco
      uk.fmuser.org -> ucraniano
      ur.fmuser.org -> Urdu
      vi.fmuser.org -> vietnamita
      cy.fmuser.org -> Galês
      yi.fmuser.org -> iídiche

       
  •  

    FMUSER Transmitir vídeo e áudio sem fio mais fácil!

  • Contato

    Endereço:
    No.305 Sala HuiLan Edifício No.273 Huanpu Road Guangzhou China 510620

    E-mail
    [email protegido]

    Tel/What Apps:
    +8618078869184

  • Categorias

  • Newsletter

    PRIMEIRO OU NOME COMPLETO

    Email

  • solução paypal  Western Union Banco da China
    E-mail[email protegido]   WhatsApp: +8618078869184 Skype: sky198710021 Fala comigo
    Copyright 2006 2020-Powered By www.fmuser.org

    Contate-nos