2015-06-04 15 views
8

Tôi đang theo dõi các hướng dẫn này (1, 2) để tạo ứng dụng Android dành cho người gửi cho Chromecast và tôi chỉ muốn gửi ảnh. Có rất nhiều informaton và samples làm thế nào để đúc chữ, âm thanhvideo. Nhưng không một từ nào làm thế với điều đó với Ảnh.Truyền hình ảnh (ảnh) tới Chromecast

Tôi tin vào sức mạnh của stackoferflow và ai đó đã phải đối mặt với vấn đề như vậy. Xin vui lòng cho một số mẫu hay hướng dẫn tốt. Tất cả những gì tôi cần là hướng dẫn sử dụng hình ảnh toàn màn hình bằng cách sử dụng Media Router và các tính năng của nó.

Thats làm thế nào tôi đã gửi tin nhắn văn bản sử dụng kênh tùy chỉnh:

/** 
* Send a text message to the receiver 
*/ 
private void sendMessage(String message) { 
    if (mApiClient != null && mSmartBusChannel != null) { 
     try { 
      Cast.CastApi.sendMessage(mApiClient, 
        mSmartBusChannel.getNamespace(), message) 
        .setResultCallback(new ResultCallback<Status>() { 
         @Override 
         public void onResult(Status result) { 
          if (!result.isSuccess()) { 
           Log.e(TAG, "Sending message failed"); 
          } 
         } 
        }); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception while sending message", e); 
     } 
    } else { 
     Toast.makeText(this, message, Toast.LENGTH_SHORT) 
       .show(); 
    } 
} 

Video được gửi bằng RemotePlaybackClient .. Được rồi, có chuyện gì về hình ảnh?

Cảm ơn rất nhiều vì đã giúp đỡ.


EDIT:

tôi đã tìm ra phương pháp (on this blog) của nó như thế nào có thể gửi ảnh từ lưu trữ địa phương. Và vâng, điều đó dường như không thực sự hiệu quả.

public final void openPhotoOnChromecast(String title, String url, String ownerName, String description) { 
    try { 
     Log.d(TAG, "openPhotoOnChromecast: " + url); 
     JSONObject payload = new JSONObject(); 
     payload.put(KEY_COMMAND, "viewphoto"); 
     payload.put("fullsizeUrl", url); 
     payload.put("ownerName", ownerName); 
     payload.put("title", title); 
     payload.put("description", description); 

     sendMessage(payload); 
    } catch (JSONException e) { 
     Log.e(TAG, "Cannot parse or serialize data for openPhotoOnChromecast", e); 
    } catch (IOException e) { 
     Log.e(TAG, "Unable to send openPhotoOnChromecast message", e); 
    } catch (IllegalStateException e) { 
     Log.e(TAG, "Message Stream is not attached", e); 
    } 
} 

P.S. Phương pháp này sử dụng sendMessage(...) từ các thư viện (từ gradle):

compile files('libs/commons-io-2.4.jar') 
compile files('libs/GoogleCastSdkAndroid.jar') 

Trả lời

3

Nhìn ở đây: Examples using CastCompanionLibrary to simply display an image Có thực sự ba lựa chọn để gửi hình ảnh đến một Chromecast.

  1. Bạn có thể mã hóa hình ảnh bằng chuỗi base64 và gửi qua kênh dữ liệu cho người nhận. Nếu nó quá lớn, bạn có thể chia nó ra và gửi nó qua nhiều thư. Đây là một công cụ sử dụng thực sự kém và thực sự bạn không nên làm điều này, nhưng nó có thể là .
  2. Bạn chỉ cần gửi url đến thiết bị Chromecast và lấy nó từ máy chủ của bạn bên trong ứng dụng người nhận. các đề nghị cách này để gửi hình ảnh qua để Chromecast
  3. Nếu bạn không phải tải về hình ảnh của bạn từ một máy chủ bạn có thể thiết lập máy chủ của riêng bạn chạy bên trong ứng dụng Android khách hàng của bạn và gửi một url cho người nhận để lấy nó từ đó. Đây là thay phức tạp cho việc gửi hình ảnh qua, nhưng là một lựa chọn xa mạnh mẽ hơn tùy chọn 1.

Mục tiêu của Chromecast, theo Google, là để truyền tải nội dung từ các đám mây, đó là lý do có isn thực sự không hỗ trợ cho việc gửi hình ảnh cục bộ. Nhà phát triển nên được khuyến khích tải hình ảnh trên ứng dụng người nhận từ máy chủ.

+0

cảm ơn câu trả lời rõ ràng. Tôi sẽ thử cách tiếp cận này. – AnZ

+0

Được rồi, cách tiếp cận đầu tiên không hiệu quả với tôi.Tôi sẽ thử cái thứ ba. Theo như tôi hiểu nó sẽ làm việc theo nguyên tắc "tải lên thiết bị - tải xuống chromecast". Có cần kết nối Internet để chuyển các tập tin như vậy hay chỉ có đủ WiFi giữa các thiết bị? Và một câu hỏi khác - tôi có cần Custom Receiver cho cách tiếp cận như vậy hoặc một mặc định sẽ đối phó với nó? Một số ví dụ sẽ là tuyệt vời btw. – AnZ

Các vấn đề liên quan