├── .classpath ├── .project ├── .settings └── org.eclipse.core.resources.prefs ├── AndroidManifest.xml ├── README.md ├── libs ├── android-support-v4.jar └── libGoogleAnalyticsV2.jar ├── project.properties ├── res ├── drawable-hdpi │ └── ic_launcher.png ├── drawable-ldpi │ └── ic_launcher.png ├── drawable-mdpi │ └── ic_launcher.png ├── drawable-xhdpi │ └── ic_launcher.png ├── layout │ ├── activity_main.xml │ ├── device_finder_layout.xml │ ├── device_info.xml │ ├── device_list_item_layout.xml │ ├── device_list_separator_layout.xml │ └── manual_ip.xml ├── menu │ └── activity_main.xml ├── values-v11 │ └── styles.xml ├── values-v14 │ └── styles.xml └── values │ ├── analytics.xml │ ├── config.xml │ ├── strings.xml │ └── styles.xml └── src └── com ├── codebutler └── android_websockets │ ├── HybiParser.java │ └── WebSocketClient.java └── entertailion └── android └── dial ├── Analytics.java ├── BroadcastAdvertisement.java ├── BroadcastDiscoveryClient.java ├── DialServer.java ├── HttpRequestHelper.java ├── MainActivity.java ├── ServerFinder.java ├── TrackedDialServers.java └── Utils.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dial 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | #Mon Jul 29 09:53:17 CDT 2013 2 | eclipse.preferences.version=1 3 | encoding/README.md=UTF-8 4 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | DIAL 2 | ==== 3 |

4 | 5 |

This is DIAL client written in Android. The DIAL protocol allows TV devices to be discovered and controlled.

6 | 7 |

The current version will discover both Google TV and ChromeCast devices. The client is a proof of concept for controlling ChromeCast devices using open API's. The current code does not rely on the Google Cast SDK and the OS on the ChromeCast device does not need to be hacked. 8 | The ChromeCast device also does not need to have developer options enabled. 9 |

10 | 11 |

After the DIAL servers are discovered and the user selects a particular device in the UI, an attempt is made to connect to the ChromeCast device and play a YouTube video. 12 | Most of the ChromeCast-specific logic is contained in MainActivity.onActivityResult. 13 | Operations are done via HTTP and Web Sockets. ChromeCast apps use a protocol called RAMP for media playback which is not currently supported by the client. 14 |

15 | 16 |

This holds promise for being to control other aspects of the ChromeCast device using open API's. How the CromeCast device works is now better understood (especially since the low level protocol details aren't documented by Google). 17 | It is possible to remotely control the device from a third-party app. There might be other aspects of the device that might be controlled in ways the Google apps don't support. 18 | This also shows that it might be possible to develop apps that don't use the cloud based solution of the official Google Cast SDK. 19 |

20 | 21 | 22 |

Other apps developed by Entertailion: 23 |

31 |

-------------------------------------------------------------------------------- /libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/libs/android-support-v4.jar -------------------------------------------------------------------------------- /libs/libGoogleAnalyticsV2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/libs/libGoogleAnalyticsV2.jar -------------------------------------------------------------------------------- /project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-17 15 | -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoRulesJustFeels/DIAL/cdfdd16737d45f2643928b8d4b740bb7cb9a28a2/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /res/layout/device_finder_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 |