2015-06-07 73 views
9

最新的Android Wear更新支持ChannelApi,可用於從可穿戴設備或手持設備發送/接收文件。問題是我找不到如何使用此功能的單個示例。 Android樣本不包含此功能。所以如果有人知道如何使用sendFile/receiveFile,並且可以在這裏給出一個簡單的例子,那將是不勝感激。Android Wear ChannelApi示例?

+0

有關這方面的消息嗎?我實際上正在尋找相同的 – krakig

回答

7

看看這個answer瞭解如何使用Channel API在設備之間創建通道。

後創建googleClient和retrive設備的節點ID,你要發送的文件,基本上就可以使用下面的代碼可穿戴方面:

//opening channel 
ChannelApi.OpenChannelResult result = Wearable.ChannelApi.openChannel(googleClient, nodeId, "/mypath").await(); 
channel = result.getChannel(); 

//sending file 
channel.sendFile(googleClient, Uri.fromFile(file)); 

然後,在手持設備上:

//receiving the file 
@Override 
public void onChannelOpened(Channel channel) { 
    if (channel.getPath().equals("/mypath")) { 

     file = new File("/sdcard/file.txt"); 

     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      //handle error 
     } 

     channel.receiveFile(mGoogleApiClient, Uri.fromFile(file), false); 
    } 
} 

//when file is ready 
@Override 
public void onInputClosed(Channel channel, int i, int i1) { 
    MainActivity.this.runOnUiThread(new Runnable() { 
     public void run() { 
      Toast.makeText(MainActivity.this, "File received!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

如果您需要了解更多信息,請訪問reference site from Google

+0

謝謝你提供一個例子。我已經將手機設置爲發送.mp3文件到我的可穿戴側,但我沒有收到任何東西(onChannelOpened方法未觸發),對我可能做錯什麼的想法? http://pastebin.com/VjfhwW51 – krakig

+0

你如何檢索掌上節點ID? –

+1

有沒有辦法在收到文件時看到下載進度? – krakig

2

這僅僅是一個補充答案:還要檢查您的androidmanifest中的WearableListenerService。意圖過濾器應包含com.google.android.gms.wearable.CHANNEL_EVENT操作。