public boolean push(final DmrDevice device, final MediaInfo media, Handler handler) { if (getCurrentAction(device, handler) != PlayState.STOPPED) { boolean stopresult = stop(device, handler); log.warning("play state is not stopped ,stop the play->" + stopresult); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); return false; } } if (!checkActionIsPrepared()) return false; pushingMedia = media; Service<?, ?> dlnaService = device.findService(AV_TRANSPORT_TYPE); if (dlnaService == null) { return false; } final SetAVTransportURIImpl action = new SetAVTransportURIImpl( dlnaService, media.getPushUrl().trim(), media.getMetaData(), Thread.currentThread()); handler.post( new Runnable() { @Override public void run() { log.warning("action for service to execute->" + action.toString()); service.getControlPoint().execute(action); } }); blockCurrentThread(); if (action.getResult() == true) { return resume(device, handler); } return action.getResult(); }
public void startSync(final DmrDevice device, final OnDeviceStateChangeListener listener) { if (handlers.containsKey(device.getUdn())) { return; } HandlerThread thread = new HandlerThread(String.valueOf(System.currentTimeMillis())); thread.start(); Handler actionHandler = new Handler(thread.getLooper()); // 如果当前线程没有Looper,需要创建Looper对象 if (Looper.myLooper() == null) { Looper.prepare(); SyncHandler handler = new SyncHandler(Looper.myLooper(), device, listener, actionHandler); handlers.put(device.getUdn(), handler); handler.start(); Looper.loop(); } else { SyncHandler handler = new SyncHandler(Looper.myLooper(), device, listener, actionHandler); handlers.put(device.getUdn(), handler); handler.start(); } }
public boolean getMute(final DmrDevice device, Handler handler) { if (!checkActionIsPrepared()) return false; Service<?, ?> dlnaService = device.findService(RENDERING_CONTROL_TYPE); if (dlnaService == null) { return false; } final GetMuteImpl action = new GetMuteImpl(dlnaService, Thread.currentThread()); handler.post( new Runnable() { @Override public void run() { service.getControlPoint().execute(action); } }); blockCurrentThread(); return action.getResult(); }
public long getPositionInfo(final DmrDevice device, Handler handler) { if (!checkActionIsPrepared()) return -1; Service<?, ?> dlnaService = device.findService(AV_TRANSPORT_TYPE); if (dlnaService == null) { return -1; } final GetPositionInfoImpl action = new GetPositionInfoImpl(dlnaService, Thread.currentThread()); handler.post( new Runnable() { @Override public void run() { service.getControlPoint().execute(action); } }); blockCurrentThread(); return action.getPosition(); }
public boolean seek(final DmrDevice device, final long millisecond, Handler handler) { if (!checkActionIsPrepared()) return false; Service<?, ?> dlnaService = device.findService(AV_TRANSPORT_TYPE); if (dlnaService == null) { return false; } final SeekImpl action = new SeekImpl(dlnaService, parseMillisecond(millisecond), Thread.currentThread()); handler.post( new Runnable() { @Override public void run() { service.getControlPoint().execute(action); } }); blockCurrentThread(); return action.getResult(); }
public boolean isSyncing(final DmrDevice device) { return handlers.containsKey(device.getUdn()); }
public void stopSync(final DmrDevice device) { SyncHandler handler = handlers.get(device.getUdn()); if (handler == null) return; handler.stop(); handlers.remove(device.getUdn()); }