⑴ android wifi 组播
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
把地址改到239.0.0.0~239.255.255.255之间。看看
⑵ android 混淆时怎么排除友盟推送的包
Android混淆,又称Android代码混淆,是伴随着Android系统的流行而产生的一种AndroidAPP保护技术,用于保护APP不被破解和逆向分析。
友盟(Umeng),2010年4月在北京成立,是中国最专业、最有数据凝聚力的移动开发者服务平台。友盟提供iOS、Android和Windows Phone等多平台服务。
友盟消息推送,指向指定终端用户(单播)、 所有终端用户(广播) 或 满足特定条件的终端用户群(组播),发送通知或消息。此外,还支持开发者使用 自有的账号系统(alias) 来发送消息给指定的账号或者账号群。
混淆时排除友盟推送的Jar包,只需要在proguard.cfg文件中加入如下配置即可:
-dontwarn com.umeng.**
-keep class com.umeng*.** {*; }
⑶ Android中怎么打开Wifi的组播功能
打开Android中Wifi的组播功能。主要有以下几个步骤:
在Manifest文件中加入:android.permission.CHANGE_WIFI_MULTICAST_STATE,这个权限
获取到MulticastLock对象,这个对象不能直接实例化,要通过WifiManager间接得到,工厂模式
调用MulticastLock对象的acquire方法,获取到组播锁
相应的,用完组播,为了不浪费电力,要调用MulticastLock的release方法释放锁
下面写了个简单示例,通过组播发现服务器。
Activity写的比较简单
public class MulticastDemoActivity extends Activity {
MulticastLock multicastLock;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
allowMulticast();
try {
NetUtil.findServerIpAddress();
} catch (IOException e) {
throw new RuntimeException(e);
}
Log.d("multicast.demo", "find ip ok.");
multicastLock.release();
}
private void allowMulticast(){
WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
multicastLock=wifiManager.createMulticastLock("multicast.test");
multicastLock.acquire();
}
}
在Activity中打开和释放组播锁。使用组播发送报文和接收ip地址信息的工具类代码:
public class NetUtil {
private static final String TAG="Net.Utils";
private static final int MULTICAST_PORT=5111;
private static final String GROUP_IP="224.5.0.7";
private static byte[] sendData;
static{
sendData=new byte[4];
// 0xEE78F1FB
sendData[3] = (byte) 0xEE;
sendData[2] = (byte) 0×78;
sendData[1] = (byte) 0xF1;
sendData[0] = (byte) 0xFB;
}
public static String findServerIpAddress() throws IOException{
String ip=null;
MulticastSocket multicastSocket=new MulticastSocket(MULTICAST_PORT);
multicastSocket.setLoopbackMode(true);
InetAddress group = InetAddress.getByName(GROUP_IP);
multicastSocket.joinGroup(group);
DatagramPacket packet=new DatagramPacket(sendData, sendData.length,group,MULTICAST_PORT);
for(;;){
multicastSocket.send(packet);
Log.d(TAG,">>>send packet ok");
byte[] receiveData=new byte[256];
packet=new DatagramPacket(receiveData, receiveData.length);
multicastSocket.receive(packet);
String packetIpAddress=packet.getAddress().toString();
packetIpAddress=packetIpAddress.substring(1, packetIpAddress.length());
Log.d(TAG,"packet ip address: "+packetIpAddress);
StringBuilder packetContent=new StringBuilder();
for(int i=0;i<receiveData.length;i++){
if(receiveData[i]==0){
break;
}
packetContent.append((char)receiveData[i]);
}
ip=packetContent.toString();
Log.d(TAG,"packet content ip is: "+ip);
if(ip.equals(packetIpAddress)){
Log.d(TAG,"find server ip address: "+ip);
break;
}else{
Log.d(TAG,"not find server ip address, continue …");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
return ip;
}
}
⑷ [Android P] 蓝牙mac地址的读取与修改
蓝牙设备地址(BD_ADDR)是一个48bit的唯一标识符,由LAP(24位地址低端部分)、UAP(8位地址高端部分)和NAP(16位无意义地址部分)组成,其格式如下所示:
NAP和UAP是蓝牙设备生产厂商的唯一标识码,由SIG分配给各个厂商;LAP则由厂商自行分配。
其中,bit40为组播地址标志位,其值为0:unicast(单播),其值为1:multicast(组播);bit41为地址类型标志位,其值为0:universal addr,其值为1:local addr。
在函数 BluetoothAddress::GetLocalAddress() 中展示了数种方式读取蓝牙BD_ADDR。
首先函数 fetch_vendor_addr(local_addr) 读取存储在vendor下bt_nv.bin文件中的蓝牙地址:
其次是从system property中获取本地蓝牙地址路径:
若以上两种方法均不能获得BD_ADDR,则尝试从factory property中获取:
再者,若从factory property中也无法获取到BD_ADDR,可以从之前保存的BDA中查找:
以上方法均无法获取到固定地址时,则生成随机地址,其形式为 0x22:22:xx:xx:xx:xx ,然后将之保存在property之中,每次重新开关机后会生成新的随机地址:
⑸ Android上的实时视频监控怎么实现的
1、使用FFMpeg进行视频采集,使用Live555进行RTP传输,使用VideoView进行播放。
csdn提到:重载FrameSource,写一个服务类,可以从FrameSource的派生类读取帧数据,转发给live555.
评价:本方案大型访问量大的不行,少量连接比如100以内的可以。
2、用gstreamer完成采集、编码、组播。客户端使用VideoView进行播放。
评价:本方案优点为可以实现大访问量。缺点是基本从底层架构,代码量比较大。
3、使用FFmpeg进行视频采集,使用ffserver进行视频转发,客户端使用VideoView播放。
评价:优点是实现简单、容易演示,缺点是实时性不好以及用户量大不行。
⑹ vlc for android播放组播流 很卡,直接网线连接的。播放rtsp流很流畅,请问是需要调
因为无线不支持组播.
除非ap支持组播否则你肯定会卡,无线的组播是尽力而为的传输,没有保障机制.