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

📄 datasource.java

📁 java网络编程 包含全书所有代码编程以及实例
💻 JAVA
字号:
package com.sun.media.protocol.screen;

import javax.media.Time;
import javax.media.MediaLocator;
import javax.media.protocol.*;
import java.io.IOException;

// 数据源类:从采集屏幕设定区域图像作为实时数据源
public class DataSource extends PushBufferDataSource {
  protected Object [] controls = new Object[0];
  protected boolean started = false;
  protected boolean connected = false;
  protected LiveStream stream = null;

  public DataSource() {}

  /***************************************************************************
   * 下面这个函数实现了 PushBufferDataSource 类的抽象方法
   ***************************************************************************/

  // 得到数据流
  public PushBufferStream [] getStreams() {
    LiveStream [] streams = null;
    streams = new LiveStream[1];
    stream = streams[0] = new LiveStream(getLocator());    // 初始化实时数据流
    return streams;
  }

  /***************************************************************************
   * 下面几个函数实现了 DataSource 类的抽象方法,因为public abstract class PushBufferDataSource extends DataSource
   ***************************************************************************/

  public String getContentType() {       // 得到数据源数据类型的描述
    if (!connected){
      System.err.println("Error: DataSource not connected");
      return null;
    }

    String contentType = "raw";
    return contentType;
  }

  // 连接上数据源
  public void connect() throws IOException {
    if (connected)      return;
    connected = true;
  }

  // 断开数据源
  public void disconnect() {
    try {
      if (started)        stop();
    }
    catch (IOException e) {}
    connected = false;
  }

  // 开始数据传送
  public void start() throws IOException {
    if (!connected)    // 如果没有连上数据源,则报错
      throw new java.lang.Error("DataSource must be connected before it can be started");
    if (started)        return;
    started = true;
    stream.start(true);   // 通知开始采集
  }

  // 停止数据传送
  public void stop() throws IOException {
    if ((!connected) || (!started))
      return;
    started = false;
    stream.start(false);    // 通知停止采集
  }

   /***************************************************************************
   * 下面几个函数是为实现 Controls 接口,因为public abstract class DataSource extends java.lang.Object implements Controls,Duration
   ***************************************************************************/

  // 得到所有控制器
  public Object [] getControls() {
    return controls;
  }

  // 得到特定类型的控制器
  public Object getControl(String controlType) {
    return null;
  }

  /***************************************************************************
   * 下面这个函数实现了 Duration 接口,因为public abstract class DataSource extends java.lang.Object implements Controls,Duration
   ***************************************************************************/

  // 得到播放持续时间
  public Time getDuration() {
    Time duration = DURATION_UNBOUNDED;          // 实时媒体的播放时间没有边界
    return duration;
  }
}

⌨️ 快捷键说明

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