Skip to content

pbilstein/chromecast-java-api-v2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChromeCast Java API v2

At the moment I have started implementing this library, there was a java implementation of V1 Google ChromeCast protocol, which seems to be deprecated and does not work for newly created applications. The new V2 protocol is implemented by tools that come with Cast SDK, which is available for Android, iOS and Chrome Extension as javascript. Also there is a third party implementation of V2 in Node.js. This project is a third party implementation of Google ChromeCast V2 protocol in java.

Install

Library is available in maven central. Put lines below into you project's pom.xml file:

<dependencies>
...
  <dependency>
    <groupId>su.litvak.chromecast</groupId>
    <artifactId>api-v2</artifactId>
    <version>0.0.6</version>
  </dependency>
...
</dependencies>

Or to build.gradle (mavenCentral() repository should be included in appropriate block):

dependencies {
// ...
    runtime 'su.litvak.chromecast:api-v2:0.0.6'
// ...
}

Build

To build library from sources:

  1. Clone github repo

    $ git clone https://github.com/vitalidze/chromecast-java-api-v2.git

  2. Change to the cloned repo folder and run mvn install

    $ cd chromecast-java-api-v2 $ mvn install

  3. Then it could be included into project's pom.xml from local repository:

<dependencies>
...
  <dependency>
    <groupId>su.litvak.chromecast</groupId>
    <artifactId>api-v2</artifactId>
    <version>0.0.7-SNAPSHOT</version>
  </dependency>
...
</dependencies>

Usage

This is still a work in progress. The API is not stable, the quality is pretty low and there are a lot of bugs.

To use the library, you first need to discover what Chromecast devices are available on the network.

ChromeCasts.startDiscovery();

Then wait until some device discovered and it will be available in list. Then device should be connected. After that one can invoke several available operations, like check device status, application availability and launch application:

ChromeCast chromecast = ChromeCasts.get().get(0);
// Connect
chromecast.connect();
// Get device status
Status status = chromecast.getStatus();
// Run application if it's not already running
if (chromecast.isAppAvailable("APP_ID") && !status.isAppRunning("APP_ID")) {
  Application app = chromecast.launchApp("APP_ID");
}

To start playing media in currently running media receiver:

// play media URL directly
chromecast.load("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");
// play media URL with additional parameters, such as media title and thumbnail image
chromecast.load("Big Buck Bunny",           // Media title
                "images/BigBuckBunny.jpg",  // URL to thumbnail based on media URL
                "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", // media URL
                "video/mp4" // media content type
                );

Then playback may be controlled with following methods:

// pause playback
chromecast.pause();
// continue playback
chromecast.play();
// rewind (move to specified position (in seconds)
chromecast.seek(120);
// update volume
chromecast.setVolume(0.5f);
// mute
chromecast.setMuted(true);
// unmute (will set up volume to value before muting)
chromecast.setMuted(false);

Also there are utility methods to get current chromecast status (running app, etc.) and currently played media status:

Status status = chromecast.getStatus();
MediaStatus mediaStatus = chromecast.getMediaStatus();

Current running application may be stopped by calling stopApp() method without arguments:

// Stop currently running application
chromecast.stopApp();

Don't forget to close connection to ChromeCast device by calling disconnect():

// Disconnect from device
chromecast.disconnect();

Finally, stop device discovery:

ChromeCasts.stopDiscovery();

Alternatively, ChromeCast device object may be created without discovery if address of chromecast device is known:

ChromeCast chromecast = new ChromeCast("192.168.10.36");

This is it for now. It covers all my needs, but if someone is interested in more methods, I am open to make improvements.

Useful links

Projects using library

License

(Apache v2.0 license)

Copyright (c) 2014 Vitaly Litvak [email protected]

About

Java implementation of ChromeCast V2 protocol client

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 95.7%
  • Protocol Buffer 4.3%