【问题标题】:How to make a receiver on Android phone?如何在Android手机上制作接收器?
【发布时间】:2020-07-09 13:29:26
【问题描述】:

我想在安卓系统(android phone/android pad)上实现一个接收器

我发现一个应用程序“CastReceiver”可以做到这一点。所以我尝试逆向,但是它用c++编写的重要方法,在libAirReceiver.so上,很难逆向。我试了三天就原谅了。

所以,我尝试一步一步地制作一个应用程序。第一步,这个应用注册了 Googlecast mdns 服务,但是我在我的 Mac 上找不到我的设备使用 chrome。但我使用“dns-sd -B _googlecast”,它显示在列表中。
代码在这里:

    manager = (NsdManager) getSystemService(Context.NSD_SERVICE);
        String type = "_googlecast._tcp.";
        NsdServiceInfo info = new NsdServiceInfo();
        info.setServiceType(type);
        info.setServiceName("TEST");
        info.setPort(8008);
        String str2 = UUID.randomUUID().toString().replaceAll("-", "");
        info.setAttribute("id", str2);
        info.setAttribute("bs", "C09A71866E39");//MAC
        info.setAttribute("ca", "4101");
        info.setAttribute("cd", str2);
        info.setAttribute("fn", "TEST");
        info.setAttribute("ic", "/setup/icon.png");
        info.setAttribute("md", "Receiver");
        info.setAttribute("nf", "1");
        info.setAttribute("rm", "");
        info.setAttribute("rmodel", "Receiver");
        info.setAttribute("rs", "");
        info.setAttribute("st", "0");
        info.setAttribute("ve", "05");
        manager.registerService(info, PROTOCOL_DNS_SD, getListener());

有人知道如何构建这个应用程序吗?求助~

【问题讨论】:

    标签: android google-cast


    【解决方案1】:

    以防万一它有帮助,libAirReceiver.so 与您可以在同一个 apk 中找到的 AIDL 一起使用:

    package com.softmedia.receiver.app;
    
    import com.softmedia.receiver.app.AirReceiverAPICallback;
    
    interface AirReceiverAPI {
        void setOpenDialFriendlyName(String name);
        String getOpenDialFriendlyName();
        void setOpenDialEnable(boolean isEnable);
        boolean isOpenDialEnable();
    
        void setCastFriendlyName(String name);
        String getCastFriendlyName();
        void setCastEnable(boolean isEnable);
        boolean isCastEnable();
    
        void setRendererFriendlyName(String name);
        String getRendererFriendlyName();
        void setRendererEnable(boolean isEnable);
        boolean isRendererEnable();
    
        void setAirPlayDeviceName(String name);
        String getAirPlayDeviceName();
        void setAirPlayEnable(boolean isEnable);
        boolean isAirPlayEnable();
        void setAirPlayPassword(String password);
        String getAirPlayPassword();
        boolean isAirplayBlockNewConnection();
        void setAirplayBlockNewConnection(boolean enable);
        boolean isAirPlayConnected();
        boolean isUsingSystemMediaPlayer();
    
        void setPlaybackPlayerSetting(int playerSetting);
        int  getPlaybackPlayerSetting();
    
        void setAirMirrorResolution(int resolution);
        int  getAirMirrorResolution();
        void setAirMirrorOrientation(int orientation);
        int  getAirMirrorOrientation();
    
        void setAirMirrorRecordEnable(boolean isEnable);
        boolean isAirMirrorRecordEnable();
        void setAirMirrorRecordAudioEnable(boolean isEnable);
        boolean isAirMirrorRecordAudioEnable(); 
        void setAirMirrorRecordPath(String path);
        String getAirMirrorRecordPath();
    
        void setAirTunesAudioLatency(int latency);
        int  getAirTunesAudioLatency();
        void setHideAirTunesUI(boolean isEnable);
        boolean isHideAirTunesUI();
    
        void setUseMediaCodec(boolean isEnable);
        boolean isUseMediaCodec();  
    
        void setHideNotification(boolean isEnable);
        boolean isHideNotification();
    
        void setCallback(AirReceiverAPICallback callback);
    }
    

    还有回调:

    package com.softmedia.receiver.app;
    
    interface AirReceiverAPICallback {
        void onCastInvalidSystemTime();
        boolean onCastSessionAccept(String ip);
        void onCastSessionStarted(String ip);
        void onCastSessionEnded();
    }
    

    我实际上对以多平台方式工作的实现很感兴趣,但是应该有一个技巧,我不知道在看互联网时我看到的是需要证书.. 显然我不知道没有它..

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多