我正在開發Android UPnP/DLNA應用程序。我有一個控制點,可以將文件從媒體服務器傳輸到渲染器。我可以在播放過程中暫停/播放和停止文件,但我似乎無法弄清楚如何將一個搜索欄集成到控制點以顯示播放文件的進度並能夠與搜索欄進行交互。我正在使用Cling Java庫來創建應用程序。如果有人有任何可以幫助我的例子,我會非常感激。UPNP/DLNA控制點
感謝
我試圖實現SubscriptionCallback例子,訂閱LastChange
SubscriptionCallback callback = new SubscriptionCallback(service, 600) { // Timeout in seconds
public void established(GENASubscription sub) {
System.out.println("Established: " + sub.getSubscriptionId());
}
@Override
public void failed(GENASubscription sub, UpnpResponse response, Exception ex) {
System.err.println(
createDefaultFailureMessage(response, ex)
);
}
@Override
public void ended(GENASubscription sub, CancelReason reason, UpnpResponse response) {
// Reason should be null, or it didn't end regularly
}
public void eventReceived(GENASubscription sub) {
System.out.println("Event: " + sub.getCurrentSequence().getValue());
try {
lastChange = new LastChange(
new AVTransportLastChangeParser(),
sub.getCurrentValues().get("LastChange").toString()
);
} catch (Exception ex) {
log.warning("Error parsing LastChange event content: " + ex);
return;
}
Map<String, StateVariableValue> values = sub.getCurrentValues();
StateVariableValue status = values.get("Status");
System.out.println("Status is: " + status.toString());
}
public void eventsMissed(GENASubscription sub, int numberOfMissedEvents) {
System.out.println("Missed events: " + numberOfMissedEvents);
}
@Override
protected void failed(GENASubscription arg0,
UpnpResponse arg1, Exception arg2, String arg3) {
}
};
upnpService.getControlPoint().execute(callback);
然後我試圖讓當前播放曲目的持續時間:
System.out.println("Duration: "+lastChange.getEventedValue(0, AVTransportVariable.CurrentTrackDuration.class).getValue());
但這返回一個NullPointerException。
任何想法???????
** * ** * ** * ** *UPDATE* ** * ** * ** * *
我一直在試圖實現Seek(),但沒有成功。
我有我的seekbar和listener,但是當我將seekbar拖到一個新的位置時它會一直失敗。
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2)
{
Log.i("SEEKTIME", "time:" + arg1);
upnpService.getControlPoint().execute(new Seek(service, SeekMode.REL_TIME, arg0.toString())
{
@Override
public void success(ActionInvocation invocation)
{
//super.success(invocation);
Log.i("SEEKSUCCESS", "success seek");
}
@Override
public void failure(ActionInvocation arg0, UpnpResponse arg1, String arg2)
{
Log.i("SEEKFAIL", "fail seek");
}
});
}
任何爲什麼會失敗
嗨,目前,我正在尋找一個關於流m3u8文件到Android的DLNA播放器的教程,但仍然沒有找到任何好的起點。你能給我一些建議嗎?提前致謝。 – ByulTaeng 2016-03-30 10:50:13