android区域连接,Internet连接和云连接

android在网络方面提供下面的功能:提供无线连接网络的方式,使用网络发现服务和Wi-Fi创建点到点的连接。使用XML格式来交换网络数据。在下载和网络交换中,如何减少电池的消耗。

在云方面,可以同步和备份用户数据。

下面是具体内容:

1.网络服务发现允许你的用户发现和识别本地网络的其他设备,这在文件共享和多个玩家的游戏中非常实用。android的NSD API简单的提供了这样的功能。下面讲述如何广播自己的用户名和连接信息,同时可以扫描其他的设备。

public void registerService(int port) {
   
// Create the NsdServiceInfo object, and populate it.
   
NsdServiceInfo serviceInfo  = new NsdServiceInfo();

   
// The name is subject to change based on conflicts
   
// with other services advertised on the same network.
    serviceInfo
.setServiceName("NsdChat");
    serviceInfo
.setServiceType("_http._tcp.");
    serviceInfo
.setPort(port);
   
....
}

public void initializeServerSocket() {
   
// Initialize a server socket on the next available port.
    mServerSocket
= new ServerSocket(0);

   
// Store the chosen port.
    mLocalPort
=  mServerSocket.getLocalPort();
   
...
}

public void initializeRegistrationListener() {
    mRegistrationListener
= new NsdManager.RegistrationListener() {

       
@Override
       
public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) {
           
// Save the service name.  Android may have changed it in order to
           
// resolve a conflict, so update the name you initially requested
           
// with the name Android actually used.
            mServiceName
= NsdServiceInfo.getServiceName();
       
}

       
@Override
       
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
           
// Registration failed!  Put debugging code here to determine why.
       
}

       
@Override
       
public void onServiceUnregistered(NsdServiceInfo arg0) {
           
// Service has been unregistered.  This only happens when you call
           
// NsdManager.unregisterService() and pass in this listener.
       
}

       
@Override
       
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
           
// Unregistration failed.  Put debugging code here to determine why.
       
}
   
};
}

public void registerService(int port) {
   
NsdServiceInfo serviceInfo  = new NsdServiceInfo();
    serviceInfo
.setServiceName("NsdChat");
    serviceInfo
.setServiceType("_http._tcp.");
    serviceInfo
.setPort(port);

    mNsdManager
= Context.getSystemService(Context.NSD_SERVICE);

    mNsdManager
.registerService(
            serviceInfo
, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
}

上面是注册的代码。下面是发现网络的代码:

public void initializeDiscoveryListener() {

   
// Instantiate a new DiscoveryListener
    mDiscoveryListener
= new NsdManager.DiscoveryListener() {

       
//  Called as soon as service discovery begins.
       
@Override
       
public void onDiscoveryStarted(String regType) {
           
Log.d(TAG, "Service discovery started");
       
}

       
@Override
       
public void onServiceFound(NsdServiceInfo service) {
           
// A service was found!  Do something with it.
           
Log.d(TAG, "Service discovery success" + service);
           
if (!service.getServiceType().equals(SERVICE_TYPE)) {
               
// Service type is the string containing the protocol and
               
// transport layer for this service.
               
Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
           
} else if (service.getServiceName().equals(mServiceName)) {
               
// The name of the service tells the user what they'd be
               
// connecting to. It could be "Bob's Chat App".
               
Log.d(TAG, "Same machine: " + mServiceName);
           
} else if (service.getServiceName().contains("NsdChat")){
                mNsdManager
.resolveService(service, mResolveListener);
           
}
       
}

       
@Override
       
public void onServiceLost(NsdServiceInfo service) {
           
// When the network service is no longer available.
           
// Internal bookkeeping code goes here.
           
Log.e(TAG, "service lost" + service);
       
}

       
@Override
       
public void onDiscoveryStopped(String serviceType) {
           
Log.i(TAG, "Discovery stopped: " + serviceType);
       
}

       
@Override
       
public void onStartDiscoveryFailed(String serviceType, int errorCode) {
           
Log.e(TAG, "Discovery failed: Error code:" + errorCode);
            mNsdManager
.stopServiceDiscovery(this);
       
}

       
@Override
       
public void onStopDiscoveryFailed(String serviceType, int errorCode) {
           
Log.e(TAG, "Discovery failed: Error code:" + errorCode);
            mNsdManager
.stopServiceDiscovery(this);
       
}
   
};
}

mNsdManager.discoverServices(
        SERVICE_TYPE
, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);

 

mNsdManager.discoverServices(
        SERVICE_TYPE
, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);

连接到网络服务:

public void initializeResolveListener() {
    mResolveListener
= new NsdManager.ResolveListener() {

       
@Override
       
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
           
// Called when the resolve fails.  Use the error code to debug.
           
Log.e(TAG, "Resolve failed" + errorCode);
       
}

       
@Override
       
public void onServiceResolved(NsdServiceInfo serviceInfo) {
           
Log.e(TAG, "Resolve Succeeded. " + serviceInfo);

           
if (serviceInfo.getServiceName().equals(mServiceName)) {
               
Log.d(TAG, "Same IP.");
               
return;
           
}
            mService
= serviceInfo;
           
int port = mService.getPort();
           
InetAddress host = mService.getHost();
       
}
   
};
}

当应用程序关闭时,注销网络服务:

//In your application's Activity

   
@Override
   
protected void onPause() {
       
if (mNsdHelper != null) {
            mNsdHelper
.tearDown();
       
}
       
super.onPause();
   
}

   
@Override
   
protected void onResume() {
       
super.onResume();
       
if (mNsdHelper != null) {
            mNsdHelper
.registerService(mConnection.getLocalPort());
            mNsdHelper
.discoverServices();
       
}
   
}

   
@Override
   
protected void onDestroy() {
        mNsdHelper
.tearDown();
        mConnection
.tearDown();
       
super.onDestroy();
   
}

   
// NsdHelper's tearDown method
       
public void tearDown() {
        mNsdManager
.unregisterService(mRegistrationListener);
        mNsdManager
.stopServiceDiscovery(mDiscoveryListener);
   
}

未完待续............

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值