FMUSER Wirless Μετάδοση βίντεο και ήχου πιο εύκολα!

[προστασία μέσω email] WhatsApp + 8618078869184
Γλώσσα

    Λεπτομερής εξήγηση της μετάδοσης στο Android

     

    Η μετάδοση χωρίζεται σε δύο διαφορετικούς τύπους: "Κανονικές εκπομπές" και "Παραγγελίες εκπομπών". Η συνηθισμένη εκπομπή είναι εντελώς ασύγχρονη και μπορεί να ληφθεί ταυτόχρονα από όλους τους δέκτες εκπομπής (λογικά). Η αποτελεσματικότητα της παράδοσης μηνυμάτων είναι σχετικά υψηλή, αλλά το μειονέκτημα είναι ότι ο δέκτης δεν μπορεί να περάσει το αποτέλεσμα επεξεργασίας στον επόμενο δέκτη και δεν μπορεί να τερματιστεί. Διάδοση πρόθεσης εκπομπής; Ωστόσο, η ταξινομημένη μετάδοση βασίζεται στην προτεραιότητα που δηλώνεται από τον δέκτη (δηλώνεται στο χαρακτηριστικό android: priority του στοιχείου φίλτρου πρόθεσης, όσο μεγαλύτερος είναι ο αριθμός, τόσο υψηλότερη είναι η προτεραιότητα, το εύρος τιμών: -1000 έως 1000. Είναι επίσης πιθανή κλήση του setPriority () του αντικειμένου IntentFilter για ρύθμιση) και ο παραλήπτης λαμβάνει τη μετάδοση με τη σειρά. Για παράδειγμα, εάν το επίπεδο του Α είναι υψηλότερο από αυτό του Β, και το επίπεδο του Β είναι υψηλότερο από το C, τότε η εκπομπή μεταδίδεται πρώτα στο Α, στη συνέχεια στο Β και τέλος στο C. Αφού ο Α λάβει την εκπομπή, μπορεί να αποθηκεύσει δεδομένα στη μετάδοση. Όταν η εκπομπή αποστέλλεται στο B, το B μπορεί να πάρει τα δεδομένα που αποθηκεύονται από το A από την εκπομπή.

     

    Context.sendBroadcast ()

       Αυτό που αποστέλλεται είναι μια συνηθισμένη εκπομπή και όλοι οι συνδρομητές έχουν την ευκαιρία να το αποκτήσουν και να το επεξεργαστούν.

     

    Context.sendOrderedBroadcast ()

       Η αποστολή είναι μια κανονική μετάδοση. Το σύστημα θα εκτελέσει τους δέκτες έναν προς έναν σύμφωνα με την προτεραιότητα που δηλώνει ο δέκτης. Ο προηγούμενος δέκτης έχει το δικαίωμα να τερματίσει τη μετάδοση (BroadcastReceiver.abortBroadcast ()). Εάν η μετάδοση τερματιστεί από τον προηγούμενο δέκτη, ο τελευταίος Ο δέκτης δεν μπορεί πλέον να λάβει τη μετάδοση. Για παραγγελίες μετάδοσης, ο προηγούμενος δέκτης μπορεί να αποθηκεύσει το αποτέλεσμα επεξεργασίας στην εκπομπή Intent και, στη συνέχεια, να το μεταβιβάσει στον επόμενο δέκτη.

     
    Ο δέκτης Broadcast (BroadcastReceiver) χρησιμοποιείται για τη λήψη εκπομπής Intent και η αποστολή εκπομπής Intent πραγματοποιείται καλώντας το Context.sendBroadcast () και το Context.sendOrderedBroadcast (). Συνήθως μια πρόθεση εκπομπής μπορεί να ληφθεί από πολλούς δέκτες μετάδοσης που έχουν εγγραφεί σε αυτήν την πρόθεση. Αυτή η δυνατότητα είναι παρόμοια με τους δέκτες μηνυμάτων θέματος στο JMS. Η εφαρμογή μιας μεθόδου δέκτη εκπομπής έχει ως εξής:

     

    Το πρώτο βήμα: ορίστε τον δέκτη εκπομπής, κληρονομήστε το BroadcastReceiver και ξαναγράψτε τη μέθοδο onReceive ().

    δημόσια τάξη IncomingSMSReceiver extendsBroadcastReceiver {
      @ Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Βήμα 2: Εγγραφείτε στην εκπομπή Πρόθεση ενδιαφέροντος, υπάρχουν δύο μέθοδοι συνδρομής:

    Ο πρώτος τύπος: χρησιμοποιήστε τον κωδικό για εγγραφή (δυναμική συνδρομή)

    IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomeSMSReceiver δέκτης = newIncomingSMSReceiver ();
    registerReceiver (δέκτης, φίλτρο);

     

    Ο δεύτερος τύπος: Εγγραφείτε στο κόμβος στο αρχείο AndroidManifest.xml (στατική συνδρομή)


      
           
      


    Ας ρίξουμε μια ματιά στη διαφορά μεταξύ συνδρομής δυναμικής μετάδοσης και συνδρομής στατικής μετάδοσης:
    Η στατική εκπομπή συνδρομής ονομάζεται επίσης: εκπομπή κατοίκων. Όταν η εφαρμογή σας είναι κλειστή, εάν υπάρχει μήνυμα μετάδοσης, ο δέκτης εκπομπής που γράψατε μπορεί επίσης να τον λάβει. Η μέθοδος εγγραφής του είναι AndroidManifast στην εφαρμογή σας. .xml για συνδρομή.

     

    Η δυναμική εκπομπή συνδρομής ονομάζεται επίσης: εκπομπή μη κατοίκων. Όταν τελειώσει η εφαρμογή, η εκπομπή θα εξαφανιστεί φυσικά. Για παράδειγμα, εγγραφείτε στην εκπομπή στο onCreate ή στο onResume στη δραστηριότητα και πρέπει να ακυρώσετε τη συνδρομή μετάδοσης στο onDestory ή στο OnPause. Διαφορετικά, θα αναφέρεται μια εξαίρεση, οπότε ο δέκτης εκπομπής σας θα είναι μη κάτοικος.

     

    Υπάρχει μια ακόμη λεπτομέρεια εδώ που είναι οι δύο μέθοδοι συνδρομής. Κατά την αποστολή εκπομπών, πρέπει να προσέξετε: Η μέθοδος σιωπηρής πρόθεσης χρησιμοποιείται για δυναμική εγγραφή, επομένως πρέπει να χρησιμοποιείτε σιωπηρή πρόθεση για αποστολή κατά την αποστολή εκπομπών. Διαφορετικά, ο δέκτης εκπομπής δεν θα μπορεί να λάβει τη μετάδοση. Δώστε προσοχή σε αυτό το σημείο. Αλλά κατά την εγγραφή στατικά, επειδή έχει εγγραφεί στο AndroidMainfest.xml, είναι δυνατή η χρήση της εμφάνισης και της σιωπηρής πρόθεσης κατά την αποστολή εκπομπών (φυσικά αυτό ισχύει μόνο για δέκτες εκπομπών που ορίζονται από εμάς), έτσι σε κάθε περίπτωση, γενικά χρησιμοποιούμε σιωπηρές Πρόθεση αποστολής μετάδοσης.

     

    Ας δούμε ένα παράδειγμα:

    Ρίξτε μια ματιά στη δομή του έργου:

     

    Ρίξτε μια ματιά στη στατική εκπομπή συνδρομής:
    πακέτο com.broadcast.demo;

    εισαγωγή android.app.Activity;
    εισαγωγή android.content.Intent;
    εισαγωγή android.os.Bundle;
    εισαγωγή android.view.View;
    εισαγωγή android.view.View.OnClickListener;
    εισαγωγή android.widget.Button;

    εισαγωγή com.example.androidbroadcastdemo.R;

    / **
     * Στατική μετάδοση συνδρομής
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια τάξη StaticRegisterBroadcastActivity επεκτείνει τη δραστηριότητα {

    @Καταπατώ
    προστατευμένο void onCreate (Bundle αποθηκευμένοInstanceState) {
    super.onCreate (αποθηκευμένοInstanceState);
    setContentView (R.layout.activity_main);
    Κουμπί btn = (Button) findViewById (R.id.btn);
    Προς την
    btn.setOnClickListener (νέο OnClickListener () {
    @Καταπατώ
    δημόσιο κενό onClick (Προβολή v) {
    // Χρησιμοποιήστε έναν στατικό τρόπο για να καταχωρήσετε τη μετάδοση, μπορείτε να χρησιμοποιήσετε την πρόθεση εμφάνισης για να στείλετε τη μετάδοση
    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendBroadcast (μετάδοση, null);
    }
    Προς την
    })?
    }
    Προς την
    }


    Εγγραφείτε στο AndroidMainfest.xml:



    <manifest xmlns:android="
    http://schemas.android.com/apk/res/android"
        πακέτο = "com.example.androidbroadcastdemo"
        android: versionCode = "1"
        android: versionName = "1.0">

        <χρησιμοποιεί-sdk
            Android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <εφαρμογή
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <δραστηριότητα
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Μην ανησυχείτε για το άλλο περιεχόμενο προς το παρόν, καθώς θα μιλήσουμε αργότερα, εδώ εστιάζουμε μόνο στην εγγραφή στατικών εκπομπών


          
               
                   
               
           


    Ας ρίξουμε μια ματιά στον δέκτη της εκπομπής:

    πακέτο com.broadcast.receiver;

    εισαγωγή android.content.BroadcastReceiver;
    εισαγωγή android.content.Context;
    εισαγωγή android.content.Intent;
    εισαγωγή android.util.Log;

    / **
     * Δέκτης εκπομπής
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια τάξη UnSortBroadcastReceiver επεκτείνει το BroadcastReceiver {

    @Καταπατώ
    public void onReceive (Περιεχόμενο περιβάλλοντος, Πρόθεση πρόθεσης) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Η λογική της μεθόδου onReceive στον δέκτη εκπομπής είναι πολύ απλή, δηλαδή η εκτύπωση του περιεχομένου της Ενέργειας.
    Εκτελέστε το πρόγραμμα, το αποτέλεσμα είναι πολύ απλό, εδώ δεν είναι η εικόνα.

     

    Ας ρίξουμε μια ματιά στις δυναμικές συνδρομές:


    πακέτο com.broadcast.demo;

    εισαγωγή android.app.Activity;
    εισαγωγή android.content.Intent;
    εισαγωγή android.content.IntentFilter;
    εισαγωγή android.os.Bundle;
    εισαγωγή android.view.View;
    εισαγωγή android.view.View.OnClickListener;
    εισαγωγή android.widget.Button;

    εισαγωγή com.broadcast.receiver.UnSortBroadcastReceiver;
    εισαγωγή com.example.androidbroadcastdemo.R;

    / **
     * Χρησιμοποιήστε δυναμικό τρόπο εγγραφής εκπομπής
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια κλάση DynamicRegisterBroadcastActivity επεκτείνει τη δραστηριότητα {
    Προς την
    δημόσια στατική τελική συμβολοσειρά NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    προστατευμένος δέκτης UnSortBroadcastReceiver.
    Προς την
    @Καταπατώ
    προστατευμένο void onCreate (Bundle αποθηκευμένοInstanceState) {
    super.onCreate (αποθηκευμένοInstanceState);
    setContentView (R.layout.activity_main);
    Κουμπί btn0 = (Button) findViewById (R.id.btn);
    btn0.setOnClickListener (νέο OnClickListener () {
    δημόσιο κενό onClick (Προβολή v) {
    // Αποστολή εκπομπής
    Πρόθεση = νέα πρόθεση (NEW_LIFEFORM_DETECTED);
    sendBroadcast (αυτό);
    }
    })?
    }

    @Καταπατώ
    προστατευμένο κενό onResume () {
    super.onResume ();
    // Εγγραφείτε για μετάδοση
    IntentFilter counterActionFilter = νέο IntentFilter (NEW_LIFEFORM_DETECTED);
    δέκτης = νέο UnSortBroadcastReceiver ();
    registerReceiver (δέκτης, counterActionFilter);
    }

    @Καταπατώ
    προστατευμένο κενό onPause () {
    super.onPause ();
    // Ακύρωση μετάδοσης
    unregisterReceiver (δέκτης);
    }
    }
    Εδώ εγγραφούμε σε εκπομπές στο onResume και καταργούμε την εγγραφή μας σε εκπομπές στο onPause.
    Αλλάξτε τη δραστηριότητα που ξεκίνησε σε DynamicRegisterBroadcastActivity στο AndroidMainfest.xml. Το άλλο περιεχόμενο δεν χρειάζεται να τροποποιηθεί. Εκτελέστε το πρόγραμμα και εκτυπώστε το αποτέλεσμα είναι πολύ απλό, οπότε δεν θα δω την εικόνα εδώ.

     

    Ας ρίξουμε μια ματιά σε ταξινομημένες εκπομπές και σε μη ταξινομημένες εκπομπές

    Το έχουμε ήδη αναφέρει στην αρχή, ας ρίξουμε μια ματιά σε μια διαταραγμένη μετάδοση:

    Πρώτα ορίζουμε δύο δέκτες μετάδοσης:

    Ο πρώτος δέκτης μετάδοσης:


    πακέτο com.broadcast.receiver;

    εισαγωγή android.content.BroadcastReceiver;
    εισαγωγή android.content.Context;
    εισαγωγή android.content.Intent;
    εισαγωγή android.util.Log;

    / **
     * Δέκτης εκπομπής Α
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια τάξη SortBroadcastReceiverA επεκτείνει το BroadcastReceiver {

    @Καταπατώ
    public void onReceive (Περιεχόμενο περιβάλλοντος, Πρόθεση πρόθεσης) {
    Log.e ("Επίδειξη:", "δέκτης εκπομπής Α");
    }

    }
    Ο δεύτερος δέκτης εκπομπής:

    πακέτο com.broadcast.receiver;

    εισαγωγή android.content.BroadcastReceiver;
    εισαγωγή android.content.Context;
    εισαγωγή android.content.Intent;
    εισαγωγή android.util.Log;

    / **
     * Δέκτης εκπομπής Β
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια τάξη Το SortBroadcastReceiverB επεκτείνει το BroadcastReceiver {

    @Καταπατώ
    public void onReceive (Περιεχόμενο περιβάλλοντος, Πρόθεση πρόθεσης) {
    Log.e ("Επίδειξη:", "Broadcast B");
    }

    Προς την
    Προς την
    }


    Εγγραφείτε για μετάδοση στο AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    αποτέλεσμα λειτουργίας:


    Το αποτέλεσμα είναι λίγο περίεργο. Γιατί ο δέκτης Β μπροστά και ο δέκτης Α στο πίσω μέρος; Ο λόγος είναι ότι όταν εγγραφούμε στην εκπομπή στο AndroidMainfest.xml, ορίζουμε την τιμή χαρακτηριστικού android: priority στο φίλτρο πρόθεσης. Όσο μεγαλύτερη είναι η τιμή, τόσο μεγαλύτερη είναι η προτεραιότητα. , Η προτεραιότητα του δέκτη Β είναι 1000, η ​​προτεραιότητα του δέκτη Α είναι 999, οπότε το Β λαμβάνει την εκπομπή πρώτα και μετά το Α το λαμβάνει, αλλά δεν υπάρχει σύνδεση μεταξύ του δέκτη Β και του δέκτη Α και δεν μπορεί να υπάρξει αλληλεπίδραση Ναι, επειδή πρόκειται για μια εκτός σύνδεσης παραγγελία και ασύγχρονη, μπορούμε να κάνουμε ένα πείραμα προσθέτοντας κώδικα στη μέθοδο onReceiver στο B:

    abortBroadcast (); // Τερματισμός της μετάδοσης αυτής της μετάδοσης

    αποτέλεσμα λειτουργίας:

     

    Μπορούμε να δούμε το άμεσο σφάλμα, δηλαδή, δεν επιτρέπεται η εκπομπή χωρίς παραγγελία να τερματίσει τη μετάδοση. Στην πραγματικότητα, ο τερματισμός είναι άχρηστος, επειδή ο δέκτης Α εξακολουθεί να λαμβάνει την εκπομπή.

     

    Ας ρίξουμε μια ματιά στην κανονική μετάδοση, ο κώδικας πρέπει να τροποποιηθεί:

    Το πρώτο είναι όταν στέλνετε μια εκπομπή:


    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (μετάδοση, null);
    Στη συνέχεια, προσθέστε μια μέθοδο για τον τερματισμό της μετάδοσης στον δέκτη Β:
    abortBroadcast ();

    Ο άλλος κωδικός δεν χρειάζεται να τροποποιηθεί, το αποτέλεσμα της λειτουργίας:

     

    Υπάρχει μόνο ο δέκτης Β, ο δέκτης Α δεν λαμβάνει την εκπομπή, επειδή η μετάδοση τερματίζεται στον δέκτη Β και οι επόμενοι δέκτες δεν μπορούν να την αποδεχτούν.

    Τροποποιήστε τον παρακάτω κώδικα:

    Παραλήπτης Β:


    πακέτο com.broadcast.receiver;

    εισαγωγή android.content.BroadcastReceiver;
    εισαγωγή android.content.Context;
    εισαγωγή android.content.Intent;
    εισαγωγή android.os.Bundle;
    εισαγωγή android.util.Log;

    / **
     * Δέκτης εκπομπής Β
     * @συγγραφέας weijiang204321
     *
     */
    δημόσια τάξη Το SortBroadcastReceiverB επεκτείνει το BroadcastReceiver {

    @Καταπατώ
    public void onReceive (Περιεχόμενο περιβάλλοντος, Πρόθεση πρόθεσης) {
    Log.e ("Επίδειξη:", "δέκτης εκπομπής Β");
    Πακέτο δέσμης = νέο πακέτο ();
    bundle.putString ("next_receiver", "επόμενος δέκτης μετάδοσης");
    setResultExtras (πακέτο);
    }
    Προς την
    }
    Αφού ο Β λάβει την εκπομπή, αποθηκεύει κάποια τιμή και την μεταδίδει στον επόμενο δέκτη.


    Κωδικός δέκτη Α:


    πακέτο com.broadcast.receive

     

     

     

     

    Εμφάνισε όλα τα Ερώτηση

    Ψευδώνυμο

    Ηλεκτρονική Διεύθυνση (Email)

    Ερωτήσεις

    άλλο προϊόν μας:

    Πακέτο επαγγελματικού ραδιοφωνικού σταθμού FM

     



     

    Λύση ξενοδοχείου IPTV

     


      Εισαγάγετε email για να εκπλήξετε

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Αφρικανικά
      sq.fmuser.org -> Αλβανικά
      ar.fmuser.org -> Αραβικά
      hy.fmuser.org -> Αρμενίων
      az.fmuser.org -> Αζερμπαϊτζάν
      eu.fmuser.org -> Βάσκων
      be.fmuser.org -> Λευκορωσικά
      bg.fmuser.org -> Βουλγαρικά
      ca.fmuser.org -> Καταλανικά
      zh-CN.fmuser.org -> Κινέζικα (απλοποιημένα)
      zh-TW.fmuser.org -> Κινέζικα (Παραδοσιακά)
      hr.fmuser.org -> Κροατικά
      cs.fmuser.org -> Τσέχικα
      da.fmuser.org -> Δανικά
      nl.fmuser.org -> Ολλανδικά
      et.fmuser.org -> Εσθονικά
      tl.fmuser.org -> Φιλιππινέζικα
      fi.fmuser.org -> Φινλανδικά
      fr.fmuser.org -> Γαλλικά
      gl.fmuser.org -> Γαλικιανά
      ka.fmuser.org -> Γεωργιανά
      de.fmuser.org -> Γερμανικά
      el.fmuser.org -> Ελληνική
      ht.fmuser.org -> Κρεόλ της Αϊτής
      iw.fmuser.org -> Εβραϊκά
      hi.fmuser.org -> Χίντι
      hu.fmuser.org -> Ουγγρική
      is.fmuser.org -> Ισλανδικά
      id.fmuser.org -> Ινδονησιακά
      ga.fmuser.org -> Ιρλανδικά
      it.fmuser.org -> Ιταλικά
      ja.fmuser.org -> Ιαπωνικά
      ko.fmuser.org -> Κορεάτικα
      lv.fmuser.org -> Λετονικά
      lt.fmuser.org -> Λιθουανικά
      mk.fmuser.org -> Μακεδόνας
      ms.fmuser.org -> Μαλαισιανά
      mt.fmuser.org -> Μαλτέζικα
      no.fmuser.org -> Νορβηγική
      fa.fmuser.org -> Περσικά
      pl.fmuser.org -> Πολωνικά
      pt.fmuser.org -> Πορτογαλικά
      ro.fmuser.org -> Ρουμανικά
      ru.fmuser.org -> Ρωσικά
      sr.fmuser.org -> Σέρβικα
      sk.fmuser.org -> Σλοβακικά
      sl.fmuser.org -> Σλοβένικα
      es.fmuser.org -> Ισπανικά
      sw.fmuser.org -> Σουαχίλι
      sv.fmuser.org -> Σουηδικά
      th.fmuser.org -> Ταϊλάνδης
      tr.fmuser.org -> Τουρκικά
      uk.fmuser.org -> Ουκρανικά
      ur.fmuser.org -> Ουρντού
      vi.fmuser.org -> Βιετνάμ
      cy.fmuser.org -> Ουαλικά
      yi.fmuser.org -> Γίντις

       
  •  

    FMUSER Wirless Μετάδοση βίντεο και ήχου πιο εύκολα!

  • Επικοινωνία

    Διεύθυνση:
    No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Κίνα 510620

    ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ:
    [προστασία μέσω email]

    Τηλ / WhatApps:
    + 8618078869184

  • Κατηγορίες

  • Newsletter

    ΠΡΩΤΟ Ή ΠΛΗΡΕΣ ΟΝΟΜΑ

    Ε-mail

  • λύση paypal  Western UnionΤράπεζα της Κίνας
    ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ:[προστασία μέσω email]   WhatsApp: +8618078869184 Skype: sky198710021 Συνομίλησε μαζί μου
    Copyright 2006 2020-Powered By www.fmuser.org

    Επικοινωνία