FMUSER Wirless להעביר וידאו ושמע קל יותר!

[מוגן בדוא"ל] WhatsApp + 8618078869184
שפה

    הסבר מפורט על שידור באנדרואיד

     

    השידור מחולק לשני סוגים שונים: "שידורים רגילים" ו"שידורים מסודרים ". שידור רגיל הוא אסינכרוני לחלוטין וניתן לקבל אותו על ידי כל מקבלי השידור בו זמנית (באופן הגיוני). היעילות של מסירת המסרים גבוהה יחסית, אך החיסרון הוא שהמקבל אינו יכול להעביר את תוצאת העיבוד למקלט הבא, ולא ניתן לסיים אותו. התפשטות כוונת שידור; עם זאת, שידור מסודר מבוסס על העדיפות שהוכרז על ידי המקלט (הוכרז באנדרואיד: תכונת עדיפות של אלמנט מסנן הכוונה, ככל שהמספר גדול יותר, כך העדיפות גבוהה יותר, טווח הערכים: -1000 עד 1000. זה גם אפשרי התקשר ל- setPriority () של האובייקט IntentFilter להגדרה), והנמען מקבל את השידור בתורו. לדוגמא, אם רמת A גבוהה מזו של B, ורמת B גבוהה מ- C, אז השידור מועבר תחילה ל- A, ואז ל- B, ולבסוף ל- C. לאחר ש- A מקבל את השידור, זה יכול לאחסן נתונים בשידור. כאשר השידור נשלח ל- B, B יכול לקבל את הנתונים המאוחסנים על ידי A מהשידור.

     

    Context.sendBroadcast ()

       מה שנשלח הוא שידור רגיל, ולכל המנויים יש אפשרות להשיג אותו ולעבד אותו.

     

    Context.sendOrderedBroadcast ()

       שליחה היא שידור מסודר. המערכת תבצע את המקלטים בזה אחר זה על פי העדיפות המוצהרת על ידי המקלט. למקבל הקודם הזכות להפסיק את השידור (BroadcastReceiver.abortBroadcast ()). אם השידור הופסק על ידי המקלט הקודם, המקלט האחרון כבר לא יכול לקבל את השידור. לשידור שהוזמן, המקלט הקודם יכול לאחסן את תוצאת העיבוד בכוונת השידור ולאחר מכן להעביר אותה למקלט הבא.

     
    מקלט שידור (BroadcastReceiver) משמש לקבלת כוונת שידור ושליחת שידור כוונה מתממשת על ידי קריאה ל Context.sendBroadcast () ו- Context.sendOrderedBroadcast (). בדרך כלל ניתן לקבל כוונת שידור על ידי מקבלי שידור מרובים שמנויים בכוונה זו. תכונה זו דומה למקלטי הודעות נושא ב- JMS. כדי ליישם שיטת מקלט שידור היא כדלקמן:

     

    השלב הראשון: הגדר את מקלט השידור, ירש את BroadcastReceiver ושכתב את שיטת onReceive ().

    כיתה ציבורית IncomingSMSReceiver extends BroadcastReceiver {
      @ ביטול ציבורי בטל ב- OnReceive (Contextcontext, Intentintent) {
      }
    }

     

    שלב 2: הירשם לשידור הכוונה לעניין, ישנן שתי שיטות מנוי:

    הסוג הראשון: השתמש בקוד למנוי (מנוי דינמי)

    מסנן IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    מקלט IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (מקלט, פילטר);

     

    הסוג השני: הירשם ל- צומת בקובץ AndroidManifest.xml (מנוי סטטי)


      
           
      


    בואו נסתכל על ההבדל בין מנוי לשידור דינמי למנוי שידור סטטי:
    שידור מנוי סטטי נקרא גם: שידור תושב. כאשר בקשתך סגורה, אם יש הודעת שידור, מקלט השידור שכתבת יכול גם לקבל אותה. שיטת הרישום שלה היא AndroidManifast ביישום שלך. .xml למנוי.

     

    שידור מנוי דינמי נקרא גם: שידור חוץ. עם סיום הבקשה השידור באופן טבעי ייעלם. לדוגמא, אתה מנוי לשידור ב- onCreate או onResume בפעילות, ועליך לבטל את מנוי השידור ב- onDestory או onPause. אחרת, ידווח על חריג, כך שמקלט השידור שלך יהיה תושב חוץ.

     

    יש כאן פרט נוסף שהוא שתי שיטות המנוי. בעת שליחת שידורים עליכם לשים לב ל: שיטת הכוונה המרומזת משמשת לרישום דינמי, לכן עליכם להשתמש בכוונה מרומזת למשלוח בעת שליחת שידורים. , אחרת מקלט השידור לא יוכל לקבל את השידור. שימו לב לנקודה זו. אך כאשר נרשמים כמנויים באופן סטטי, מכיוון שהוא מנויים ב- AndroidMainfest.xml, ניתן להשתמש בכוונת תצוגה וכוונה מרומזת בעת שליחת שידורים (כמובן שזה רק למקלטי שידור שהוגדרו על ידינו), כך שבכל מקרה, אנו בדרך כלל משתמשים במשתמע כוונה לשלוח שידור.

     

    בואו נסתכל על דוגמה:

    התבונן במבנה הפרויקט:

     

    התבונן בשידור המנוי הסטטי:
    חבילה com.broadcast.demo;

    ייבוא ​​android.app.Activity;
    יבוא android.content.Intent;
    יבוא android.os.Bundle;
    יבוא אנדרואיד.view.View;
    ייבא אנדרואיד.view.View.OnClickListener;
    ייבוא ​​android.widget.Button;

    ייבא com.example.androidbroadcastdemo.R;

    / **
     * שידור מנוי סטטי
     * @ מחבר weijiang204321
     *
     */
    מעמד ציבורי StaticRegisterBroadcastActivity מרחיב את הפעילות {

    @ Override
    חלל מוגן onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    כפתור btn = (כפתור) findViewById (R.id.btn);
    ל
    btn.setOnClickListener (חדש OnClickListener () {
    @ Override
    חלל ציבורי onClick (הצג v) {
    // השתמש בדרך סטטית לרישום השידור, אתה יכול להשתמש בכוונת התצוגה כדי לשלוח את השידור
    שידור כוונה = כוונה חדשה ("com.broadcast.set.broadcast");
    sendBroadcast (שידור, null);
    }
    ל
    });
    }
    ל
    }


    הירשם ל- AndroidMainfest.xml:



    <manifest xmlns:android="
    http://schemas.android.com/apk/res/android"
        package = "com.example.androidbroadcastdemo"
        אנדרואיד: versionCode = "1"
        אנדרואיד: versionName = "1.0">

        <uses-sdk
            אנדרואיד: minSdkVersion = "8"
            אנדרואיד: targetSdkVersion = "18" />
       
       
       
       
       
       

        <יישום
            אנדרואיד: allowBackup = "נכון"
            אנדרואיד: icon = "@ drawable / ic_launcher"
            אנדרואיד: label = "@ string / app_name"
            אנדרואיד: theme = "@ style / AppTheme">
            <פעילות
                אנדרואיד: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                אנדרואיד: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    אל תדאג לתכנים האחרים לעת עתה, כפי שנדבר בהמשך, כאן אנו מתמקדים רק ברישום שידורים סטטיים


          
               
                   
               
           


    בואו נסתכל על מקלט השידור:

    חבילה com.broadcast.receiver;

    יבוא android.content.BroadcastReceiver;
    יבוא android.content.Context;
    יבוא android.content.Intent;
    יבוא android.util.Log;

    / **
     * מקלט שידור
     * @ מחבר weijiang204321
     *
     */
    מחלקה ציבורית UnSortBroadcastReceiver מרחיב BroadcastReceiver {

    @ Override
    בטל פומבי onReceive (הקשר הקשר, כוונת כוונה) {
    Log.e ("Intent_Action:", intention.getAction () + "");
    }

    }
    ההיגיון בשיטת onReceive במקלט השידור פשוט מאוד, כלומר להדפיס את תוכן הפעולה.
    הפעל את התוכנית, התוצאה מאוד פשוטה, כאן לא התמונה.

     

    בואו נסתכל על מנויים דינמיים:


    חבילה com.broadcast.demo;

    ייבוא ​​android.app.Activity;
    יבוא android.content.Intent;
    יבוא android.content.IntentFilter;
    יבוא android.os.Bundle;
    יבוא אנדרואיד.view.View;
    ייבא אנדרואיד.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 מוגן;
    ל
    @ Override
    חלל מוגן onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    כפתור btn0 = (כפתור) findViewById (R.id.btn);
    btn0.setOnClickListener (OnClickListener חדש () {
    חלל ציבורי onClick (הצג v) {
    // שלח שידור
    הכוונה = כוונה חדשה (NEW_LIFEFORM_DETECTED);
    sendBroadcast (זה);
    }
    });
    }

    @ Override
    חלל מוגן onResume () {
    super.onResume ();
    // הירשם לשידור
    IntentFilter counterActionFilter = IntentFilter חדש (NEW_LIFEFORM_DETECTED);
    מקלט = UnSortBroadcastReceiver חדש ();
    registerReceiver (מקלט, counterActionFilter);
    }

    @ Override
    ריק מוגן 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 {

    @ Override
    בטל פומבי onReceive (הקשר הקשר, כוונת כוונה) {
    Log.e ("הדגמה:", "מקלט שידור A");
    }

    }
    מקלט השידור השני:

    חבילה com.broadcast.receiver;

    יבוא android.content.BroadcastReceiver;
    יבוא android.content.Context;
    יבוא android.content.Intent;
    יבוא android.util.Log;

    / **
     * מקלט שידור B
     * @ מחבר weijiang204321
     *
     */
    מחלקה ציבורית SortBroadcastReceiverB מרחיב BroadcastReceiver {

    @ Override
    בטל פומבי onReceive (הקשר הקשר, כוונת כוונה) {
    Log.e ("הדגמה:", "שידור B");
    }

    ל
    ל
    }


    הירשם לשידור ב- AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    תוצאת פעולה:


    תוצאת הריצה מעט מוזרה. מדוע מקלט B בחלק הקדמי ומקלט A מאחור? הסיבה היא שכאשר אנו מנויים לשידור ב- AndroidMainfest.xml, הגדרנו את ערך התכונה אנדרואיד: עדיפות במסנן הכוונות. ככל שהערך גדול יותר, כך העדיפות גבוהה יותר. , העדיפות של מקלט B היא 1000, העדיפות של מקלט A היא 999, אז B מקבל את השידור תחילה, ואז A מקבל אותו, אך אין קשר בין מקלט B למקלט A, ולא יכולה להיות אינטראקציה מכיוון שמדובר בשידור שאינו מסודר ואסינכרוני, אנו יכולים לעשות ניסוי על ידי הוספת קוד לשיטת onReceiver ב- B:

    abortBroadcast (); // לסיים את העברת שידור זה

    תוצאת פעולה:

     

    אנו יכולים לראות את השגיאה המהירה, כלומר שידור ללא הזמנה אינו רשאי לסיים את השידור. למעשה, סיום הוא חסר תועלת, מכיוון שמקלט A עדיין מקבל את השידור.

     

    בואו נסתכל על שידור מסודר, יש לשנות את הקוד:

    הראשון הוא בעת שליחת שידור:


    שידור כוונה = כוונה חדשה ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (שידור, null);
    ואז הוסף שיטה לסיום השידור במקלט B:
    abortBroadcast ();

    אין צורך לשנות את הקוד האחר, תוצאת הפעולה:

     

    יש רק מקלט B, מקלט A לא מקבל את השידור, כי השידור מסתיים במקלט B, והמקלטים הבאים לא יכולים לקבל את זה.

    שנה את הקוד שלהלן:

    נמען ב ':


    חבילה com.broadcast.receiver;

    יבוא android.content.BroadcastReceiver;
    יבוא android.content.Context;
    יבוא android.content.Intent;
    יבוא android.os.Bundle;
    יבוא android.util.Log;

    / **
     * מקלט שידור B
     * @ מחבר weijiang204321
     *
     */
    מחלקה ציבורית SortBroadcastReceiverB מרחיב BroadcastReceiver {

    @ Override
    בטל פומבי onReceive (הקשר הקשר, כוונת כוונה) {
    Log.e ("הדגמה:", "מקלט שידור B");
    צרור צרור = צרור חדש ();
    bundle.putString ("הבא_מקבל", "מקלט השידור הבא");
    setResultExtras (צרור);
    }
    ל
    }
    לאחר ש- B מקבל את השידור, הוא שומר ערך כלשהו ומעביר אותו למקלט הבא.


    קוד של מקלט א ':


    חבילה com.broadcast.reciveive

     

     

     

     

    רשימת כל שאלה

    כינוי

    כתובת אימייל

    שאלות

    המוצר השני שלנו:

    חבילת ציוד לתחנת רדיו FM מקצועית

     



     

    פתרון IPTV של מלון

     


      הזן דוא"ל כדי לקבל הפתעה

      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 חדר HuiLan בניין No.273 Huanpu כביש גואנגזו סין 510620

    E-mail
    [מוגן בדוא"ל]

    טל / WhatApps:
    +8618078869184

  • כל הקטגוריות

  • ניוזלטר

    השם הראשון או המלא

    דואר אלקטרוני

  • פתרון paypal  האיחוד המערביהבנק של סין
    E-mail[מוגן בדוא"ל]   WhatsApp: +8618078869184 סקייפ: sky198710021 שוחח איתי
    כל הזכויות שמורות 2006-2020 Powered By www.fmuser.org

    צור קשר