⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avtransportservice.java

📁 国外的j2me播放器软件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    System.out.println("Player was already initialized. Closing it now");
                    p.close();
                    System.out.println("Player closed");
                    
                    p = null;
                }
                
                System.out.println("Creating player for the AVTransportURI");
                
                HttpMediaDataSource media = new HttpMediaDataSource(
                        pi.getCurrentURI());
				p = Manager.createPlayer(media);
                /*
                p = Manager.createPlayer(
                        Connector.openInputStream(pi.getCurrentURI()),
                        "audio/mpeg");
                */

                //
                // Add listener
                // 
                p.addPlayerListener(new SimplePlayerListener());

	            pi.setPlayer(p);

                numberOfTracks = 1;
                currentTrack = 1;
                
                System.out.println("Prefetch content for the new player...");
	            p.prefetch();               //player state changed, notify PlayerInfo
                //pi.notify();
			} catch (IOException e) {
                LOG.debug("IOException in RealizePlayer");
                LOG.debug(e);
				e.printStackTrace();
			} catch (MediaException e) {
                LOG.debug("MediaException in RealizePlayer");
                LOG.debug(e);
				e.printStackTrace();
			} catch (Exception e) {
                LOG.debug("Exception in RealizePlayer");
                LOG.debug(e);
				e.printStackTrace();
            }

            System.out.println("RealizePlayer finished");
		}
        
        private final class HttpMediaDataSource extends DataSource {
            ContentConnection conn = null;
            InputStream is = null;
            HttpMediaStream mediaStream = null;
            
            public HttpMediaDataSource(String locator) {
                super(locator);
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#connect()
             */
            public void connect() throws IOException {
                conn = (ContentConnection)Connector.open(getLocator());
                is = conn.openInputStream();
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#disconnect()
             */
            public void disconnect() {
                
                try {
                    stop();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
                
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#getContentType()
             */
            public String getContentType() {
                if (conn != null) {
                    return conn.getType();
                } else {
                    return null;
                }
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#getControl(java.lang.String)
             */
            public Control getControl(String arg0) {
                return null;
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#getControls()
             */
            public Control[] getControls() {
                return null;
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#getStreams()
             */
            public SourceStream[] getStreams() {
                return new SourceStream[]{mediaStream};
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#start()
             */
            public void start() throws IOException {
                if (conn != null) {
                    mediaStream = new HttpMediaStream(is);
                } else {
                    throw new IllegalStateException();
                }
            }

            /* (non-Javadoc)
             * @see javax.microedition.media.protocol.DataSource#stop()
             */
            public void stop() throws IOException {
                if (mediaStream != null) {
                    mediaStream.close();
                } else {
                    throw new IllegalStateException();
                }
            }
        }
        
        private final class HttpMediaStream implements SourceStream {
            private InputStream httpIs;
            private long pos = 0;
            
            public HttpMediaStream(InputStream is) {
                super();

                httpIs = is;
            }
            
            public Control getControl(String arg0) {
                return null;
            }

            public Control[] getControls() {
                return null;
            }

            public ContentDescriptor getContentDescriptor() {
                return new ContentDescriptor("hepp");
            }

            public long getContentLength() {
                return -1;
            }

            public int getSeekType() {
                return SourceStream.NOT_SEEKABLE;
            }

            public int getTransferSize() {
                return -1;
            }

            public int read(byte[] b, int off, int len) throws IOException {
                return httpIs.read(b, off, len);
            }

            public long seek(long where) throws IOException {
                return pos;
            }

            public long tell() {
                return pos;
            }
            
            public void close() throws IOException {
                httpIs.close();
            }
        }

/*        
        private final class HttpMediaMetaDataControl implements MetaDataControl {
            public String[] getKeys() {
                return "TITLE_KEY";
            }

            public String getKeyValue(String arg0) {
                // TODO Auto-generated method stub
                return null;
            }
            
        }
*/        
	}
	
	private class GetMediaInfoAction extends UPnPAction {
		public GetMediaInfoAction () {
			super(
					"GetMediaInfo",
					new UPnPActionArgument[]{
							new UPnPActionArgument(
									"InstanceID",
									UPnPActionArgument.ARGUMENT_DIRECTION_IN,
									"A_ARG_TYPE_InstanceID"),
							
							new UPnPActionArgument(
									"NrTracks",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"NumberOfTracks"),
							new UPnPActionArgument(
									"MediaDuration",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"CurrentMediaDuration"),
							new UPnPActionArgument(
									"CurrentURI",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"AVTransportURI"),
							new UPnPActionArgument(
									"CurrentURIMetaData",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"AVTransportURIMetaData"),
							new UPnPActionArgument(
									"NextURI",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"NextAVTransportURI"),
							new UPnPActionArgument(
									"NextURIMetaData",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"NextAVTransportURIMetaData"),
							new UPnPActionArgument(
									"PlayMedium",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"PlaybackStorageMedium"),
							new UPnPActionArgument(
									"RecordMedium",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"RecordStorageMedium"),
							new UPnPActionArgument(
									"WriteStatus",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"RecordMediumWriteStatus")});
		}
		
		public void invoke(UPnPActionArgument[] args){
			int instanceID = Integer.parseInt((String)args[0].getValue());

            if (instanceID == 0) {			
    			args[1].setValue(new Integer(numberOfTracks));
    			args[2].setValue("02:10");
    			args[3].setValue(avTransportUri);
    			args[4].setValue(avTransportUriMetaData);
    			args[5].setValue("");
    			args[6].setValue("");
    			args[7].setValue(playbackStorageMedium);
    			args[8].setValue(recordStorageMedium);
    			args[9].setValue(recordMediumWriteStatus);
            } else {
                System.out.println("Wrong instance ID in request");
                // throw new UPnPException...
            }
		}
	}
	
	private class GetTransportInfoAction extends UPnPAction {
		public GetTransportInfoAction () {
			super(
					"GetTransportInfo", 
					new UPnPActionArgument[]{
							new UPnPActionArgument(
									"InstanceID",
									UPnPActionArgument.ARGUMENT_DIRECTION_IN,
									"A_ARG_TYPE_InstanceID"),
							
							new UPnPActionArgument(
									"CurrentTransportState",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"TransportState"),
							new UPnPActionArgument(
									"CurrentTransportStatus",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"TransportStatus"),
							new UPnPActionArgument(
									"CurrentSpeed",
									UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
									"TransportPlaySpeed")});
		}
		
		public void invoke(UPnPActionArgument[] args){
			int instanceID = Integer.parseInt((String)args[0].getValue());
			
			args[1].setValue(transportState);
			args[2].setValue(transportStatus);
			args[3].setValue(transportPlaySpeed);
		}
	}
	
	private class GetPositionInfoAction extends UPnPAction {
		public GetPositionInfoAction () {
			super(
					"GetPositionInfo",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -