Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Streaming by bluetooth 
:(
    Опции темы
hamsterKSU
Дата 12.9.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



Привет

Кто нить встречал/видел/писал передачу потоков данных(аудио/видео) по блютуз между телефонами?

Может кто советом поможет.

Зарание спасибо

PM MAIL ICQ   Вверх
Dummy
Дата 18.9.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



А что конкретно сделать / написать / исследовать-то надо? По поводу чего совет-то нужен?
PM MAIL   Вверх
hamsterKSU
Дата 20.9.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



была задумка стримитьмедий контент с одной мобилы на несколько других типа такой себе медиа сервер. 

больше интересует стриминг с одной видеркамеры на другие телефоны.

все затеивалось ради интереса.

ну и почти получилось. 

но если есть какая-то инфа то буду рад послешать.


PM MAIL ICQ   Вверх
W0LF
Дата 22.9.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Идея красивая =)
Для голубого зуба посмотри в сторону RFCOMM
вот есть статейка.

Но снова же насчет подключения нескольких устройств..
Я незнаю, можно ли подсоединить два клиента к одному серверу..
В статье приведен код
Код

// Получаем ссылку на локальное устройство и делаем его доступным для поиска
    LocalDevice local = LocalDevice.getLocalDevice();
    local.setDiscoverable(DiscoveryAgent.GIAC);
    // Инициализируем прослушивание потокового соединения
    server = (StreamConnectionNotifier)Connector.open(
        "btspp://localhost:11111111111111111111111111111111");
    while (!done) {
        StreamConnection conn = null;
        // Ожидаем входящее потоковое соединение
        conn = server.acceptAndOpen();
        // Читаем входящие данные
        InputStream in = conn.openInputStream();
        length = in.read(data);
        :
        :
    } 

нужно попробовать создавать отдельные потоки на
Код

 // Читаем входящие данные
        InputStream in = conn.openInputStream();
        length = in.read(data);

Данные все-равно накапливать в буфер, и отсылать частями..

то есть реализуешь отдельный класс Client
Код

/**
 * Class for work with Individual client
 */
public class IndividualClient implements Runnable {
    
    private Connection conn;
    private DataInputStream is;
    private DataOutputStream os;
    private Sender sender;
    /**
     * Create entity and run thread    
     */
    public IndividualClient(Connection conn) {
        System.out.println("Connection Accepted: " + conn);
        this.conn = conn;
        (new Thread(this)).start();
    }

    /**
     * create connection inputstream,outputstream
     *  for current client
     */
    public void run() {
        try {
            is = new DataInputStream(conn.getInputStream());
            os = new DataOutputStream(conn.getOutputStream());
            sender = new Sender(os);
            while (!stop) {
                actionManager.parseData(is);//actionManager - какой-то там твой класс, который парсит поток
            }
        } catch (IOException e) {
            System.out.println("Connection is closed");
            stop();
        }
    }

    /**
     * stop connection with current client
     */
    public void stop() {
        try {
            if (sender != null) {
                sender.stop();
            }
            if (is != null) {
                is.close();
            }
            if (os != null) {
                os.close();
            }
            if (conn != null) {
                conn.close();
            }
            stop = true;
        } catch (IOException ioe) {
            System.out.println("Some problems when closing a connection");
        }
    }

    public Sender getSender() {
        return sender;
    }

}

/**
 * Class, which sends data to clint over protocol
 */
public class Sender implements Runnable {
    /**
     * OutputStream
     */
    private OutputStream os;
    /**
     * pool of data, which will be sent
     */
    private Vector<ByteArrayOutputStream> dataPool;
    /**
     * thread, which send data
     */
    private Thread t;
    /**
     * true if thread was started, otherwise - false
     */
    private boolean startedThread = false;

    public Sender(OutputStream os) {
        dataPool = new Vector<ByteArrayOutputStream>();
        this.os = os;
        start();
    }

    private void start() {
        t = new Thread(this);
        t.start();
    }

    public void send(byte[] data) {
        while (!startedThread) {
            try {
                Thread.sleep(10);
            } catch (InterruptedException ie) {

            }
        }
        synchronized (this) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            try {
                baos.write(data);
                baos.close();
            } catch (IOException e) {
                log("Sender", "send() : can't write data to stream");
            }

            this.dataPool.add(baos);
            notify();
        }
    }

    public void run() {
        synchronized (this) {
            startedThread = true;
            while (true) {
                if (dataPool.size() == 0) {
                    try {
                        wait();
                    } catch (InterruptedException e) {
                    }
                }
                if (dataPool.size() == 0) {
                    break;
                }
                try {
                    Enumeration<ByteArrayOutputStream> e = dataPool.elements();
                    while (e.hasMoreElements()) {
                        os.write(e.nextElement().toByteArray());
                    }
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
                dataPool.clear();
            }
        }
    }

    /**
     * stop this thread
     */
    public synchronized void stop() {
        dataPool.clear();
        notify();
    }
}



Карочи аля чета такое. Мож де ошибки есть - писал, как говорил Dancer, с колена smile
Мож че и получится, надо пробовать smile


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.