WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Как Вы можете запустить a .au файл?

Как Вы можете запустить a .au файл?


Дата публикации: 17-03-2013

Предложение от Nelson Yu

Имеются два основных способа запустить .au файл в апплете (в автономном приложении, вы должны использовать недокументированные классы Sun или написать ваш собственный аудио обработчик).

1) Непосредственно проиграть аудио.

play(URL)
play(URL, string)
// say audio file is located at http://java.sun.com/
// which is the documentation base
play(getDocumentBase(), "myLittleAudio.au");
otherwise if its located in a 'audio' directory you will need create a new url i.e
URL u = new URL(getDocumentBase().toString() + "/audio");
2) Возвращает аудио клип для проигрования его позже.

getAudioClip(URL)
getAudioClip(URL, string)
Использовуется тот же способ что приведен выше, но вместо этого то возвращает AudioClip (который является интерфейсом) аналогичным способом getAppletContext () возвращает AppletContext даже при том, что AppletContext - интерфейс.

GetAudioClip (getDocumentBase (), "myLittleAudio.au") .loop ();
Предложение от William S. Clark

Запускать .au файл:

import java.io.InputStream;
import java.net.*;
import java.applet.*;
import java.awt.Graphics;
import java.awt.Color;

public class Message extends java.applet.Applet {
private String file;
private AudioClip source;

public void init() {
setBackground(new Color(0));
file=getParameter("FILE");
source=getAudioClip(getDocumentBase(),file);
}

public void start() {
if(source!=null) source.play();
}

public void stop() {
if(source!=null) source.stop();
}

}

Предложение от Steve Alexander

Приведенный ниже код не устойчив (обработка особых ситуаций и проверка пустого указателя - не реализована) но это - простой пример основного процесса, включенного в получение аудио объекта, и проигрования файла. Ключевые объекты и используемые методы - AudioClip, loop() и stop().Другой метод, не используемый здесь но возможно некоторого значения play () метода, который запускает аудио клип.

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;

public class PlayAudio extends Applet
{

AudioClip myAudio;
Button b_play;
Button b_stop;
String textString;

public void init()
{
resize(300, 100);

b_play = new Button("Play audio");
b_stop = new Button("Stop audio");

myAudio = getAudioClip(getDocumentBase(), "computer.au");

add(b_play);
add(b_stop);
}

public void start()
{
}

public void paint(Graphics g)
{
g.setColor(Color.blue);
g.drawString(textString, 100,75);
}

public boolean action(Event e, Object arg)
{
if(e.target instanceof Button)
{
if("Play audio" == arg)
{
myAudio.loop();
textString = "Playing audio...";
}
if("Stop audio" == arg)
{
myAudio.stop();
textString = "Not playing audio...";
}
}
repaint();
return true;
}
}


2. Как Вы можете запустить .wav файл?

Предложени от Hui Zhao Wang

Чтобы cконвертировать .wav в .au файл, используйте GoldWave 2.14 (не самая последняя версия, которая записывает .au файлы).

Она доступна на:

http://www.goldwave.com


3. Как Вы можете запустить .midi файл?

Предложение от Mike Hippolyte

Java MIDI программное обеспечение - на: http://www.interport.net/~mash/javamidi.html И апплет клавиатуры, который использует Java MIDI - на: http://www.interport.net/~mash/midikeyboard.html.
Предложение от Jeff Harrington

Вы можете использовать Csound, цифровой аудио транслятор, который конвертирует MIDI файлы в .wav файлы. Для .wav файлов Вы можете использовать Sox или другую программу конвертера. Csound доступен здесь:here. У меня есть демонстрационная версия Csound аудио и Java аплет на моем узле: my site.

Предложение от Jim Robinson

Имеется самый простой способ запустить .wav файл. Это - программы на C, которая использует имя волнового (WAV) файла как параметр командной строки и запрашивает exec со стороны java. Это можно сделать более изящно используя нативные методы, работа метода запроса exec без модификации для каждого java implementations. Программа C "WavTest.exe" (должна связаться с winmm.dll):

#include
#include

void main(int argc, char** argv)
{
if(argc > 1) {
PlaySound(argv[1], NULL, SND_SYNC);
}
}


Java программа:

import java.io.*;
public class WavTest
{

static public void main(String args[])
{
try {
Process p = Runtime.getRuntime().exec("WavTest.exe test.wav");
}
catch(IOException e) {System.out.println(e.toString());}
}


}

Просто, но это работает.


4. Как заставить апплет бездействовать, пока изображение не загрузилось?

Предложение от John Zukowski


MediaTracker tracker;

image = getImage (getDocumentBase(), "image.jpg");

tracker = new MediaTracker (this);
tracker.addImage (image, 0);
// waitForAll will block the ENTIRE applet
try { tracker.waitForAll();} catch (Exception e) {}
Предложение от Bryan Smith

Java.awt.MediaTracker класс может использоваться, чтобы приостановить выполнение апплета, пока изображение или ряд изображенийне будут загружены, как в следующем сегменте кода:

{
Image img;

MediaTracker img_tracker;
...

public void init()
{
img_tracker = new MediaTracker(this);

// Start loading image and register it
// with the MediaTracker object.
img = getImage(getCodeBase, "images/img.gif");
img_tracker.add(img,0);

// Wait until image loaded before proceeding.
try
{
img_tracker.waitForID(0);
}
catch (InterruptedException e)
{
// exception handling
}

...
}
...
}
Более подробный пример использования MediaTracker находится в документации API Sun в: http://java.sun.com/JDK-1.0/api/java.awt.MediaTracker.html.


5.Как я могу отображать GIF или JPEG-ИЗОБРАЖЕНИЕ, исходящее из байта [] -буфера?

Предложение от Jeff Marin

MemoryImageSource имеет шесть конструкторов, все они массивы типа BYTE. Помните, после того, как вы создадите образец MemoryImageSource, чтобы создать образец MemoryImageSource, вы должны выполнить следующее:

Image m_RotImage = createImage(
new MemoryImageSource(m_width, m_height, pix_dest, 0, m_width));

6.Как я могу загрузить изображение в автономную панель приложения Java (то есть то, которое не имеет основного URL)?

Предложение от Anujit Sarkar

import java.awt.*;
import java.awt.image.*;

public class ImageWindow extends Frame
{
Image im=null;

public ImageWindow()
{
}

public void createImage()
{
im = getToolkit().getImage("b01.gif");
}

public void paint(Graphics g)
{
update(g);
}

public void update(Graphics g)
{
g.drawImage(im, 0, 0, this);
}

public boolean handleEvent(Event evt)
{
if (evt.id == Event.WINDOW_DESTROY)
{
System.exit(0);
}
return super.handleEvent(evt);
}

public static void main(String args[])
{
ImageWindow window = new ImageWindow();
window.createImage();
window.setTitle("Java StandAlone Application");
window.pack();
window.resize(500,300);
window.show();
}
}

Предложение от Kelvin Ho

Следующая программа загружает изображение в приложение:

import java.awt.*;

public class Holder extends Frame
{
Holder ()
{
MyPicture pic = new MyPicture ();
add (pic);
resize (500,500);
}

public boolean handleEvent(Event evt)
{
if (evt.id == Event.WINDOW_ICONIFY) {//DOESN'T seem to be necessary
hide();
return true;
}
if (evt.id == Event.WINDOW_DESTROY) {
System.exit(0);
}
return super.handleEvent(evt);
}

public static void main (String args[])
{
Holder window = new Holder ();
window.setTitle("Java's Duke");
window.pack();
window.show();
}
}

class MyPicture extends Panel
{
Image img;

MyPicture ()
{
super ();
resize (100, 100);
img = Toolkit.getDefaultToolkit().getImage("T1.gif");
repaint ();
}

public void paint (Graphics g)
{
g.drawImage(img, 10, 10, this);
}
}
Предложение от David Gibbons

Это позволяет обойти ошибку в 1.0beta2 Java, которая не будет позволять загрузку изображения приложения java с getImage методом. Добавьте:

import sun.awt.image.FileImageSource // the sun classes are included
// in the current sdk

Создайте SecurityManager класс со следующими методами:

class SecMan extends SecurityManager{
public checkRead(String s){return;}
public checkPropertyAcess(String s){return;}
public checkLink(String s){return;}
public checkAccess(Thread t){return;}
public checkAccess(ThreadGroup tg){return;}
public checkExit(int i){return;}
}

Cделайте этот класс видимым для полного класса:

Image im;
Если встречается что-то подобно main или init вставляют это:

...
SecMan secMan = new SecMan();
System.setSecurityManager(secMan);
Canvas cs = new Canvas();
im = cs.createImage(new FileImageSource("your.gif"));
...
При помещеннии, это задает вашу расцветку:

public void paint(Graphics p){
...
g.drawImage(im, 0, 0, this);
...
Это должно выполняться, пока проблема не установлена.


8.Как может мой апплет наследовать цвет фона HTML страницы ?

Предложение от Andrew Wilkinson

Самый простой путь, это передать цвет bacground HTML страницы как параметр в апплет. В HTML:










В Java коде:



import java.applet.Applet;
import java.awt.*;

public class TrnsBgrnd extends Applet {

Color bgcolor=null;

public void init() {

// Read the value of the parameter bgcolor and set the applet
// background to this value.

String attr = getParameter("bgcolor");
bgcolor = (attr != null) ? convertColor(attr) : Color.white;

setBackground(bgcolor);

}

public Color convertColor(String colStr) {

int rd = (Integer.valueOf(colStr, 16).intValue() & 0xFF0000) >> 16 ;
int gn = (Integer.valueOf(colStr, 16).intValue() & 0xFF00) >> 8;
int bl = Integer.valueOf(colStr, 16).intValue() & 0xFF ;

return (new Color(rd, gn, bl));
}

public void paint(Graphics g) {

// Do what every graphics processing is required.

g.drawRect(50, 50, 150, 100);
}
}



9.Как я узнаю, когда изображение было загружено? Выведенно на экран?

Предложение от Jim Crossley

* Определяет, когда изображение закончило загружаться, используя prepareImage ()
* метод Компонента ( Апплет которого является подклассом).
* Это вызывает "image-getting" поток для запроса imageUpdate () всякий раз,
* когда случается кое-что интересное, то есть изображение заканчивает загрузку.
* Мы отменяем ImageUpdate () и устанавливаем флаг "ready" , когда мы имеем" all of the bits".
*/



import java.applet.*;
import java.awt.*;

public class Testing extends Applet {
Image image;
boolean ready = false;

public void init() {
image = this.getImage(this.getDocumentBase(), "image.gif");

// now tell the "image-getting" thread to call imageUpdate()
this.prepareImage(image,this);
}

public boolean imageUpdate(Image img, int infoflags, int x, int y, int w,
int h) {
if ((infoflags & ALLBITS) != 0) {
ready = true;
repaint();
return false;
}
else
return true;
}

public void paint(Graphics g) {
if (ready)
g.drawImage(image,0,0,this);
}
}

10. Как я могу загрузить изображение в Netscape Java аплете? (Toolkit.getImage () не работает.)

Предложение от редактора

Начиная с версии Netscape 2.01, Вы должны использовать:

img = getImage(getDocumentBase(), "image.gif");
Вот и все!
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Pixadel:

"Хорошо, Java, ВОЗМОЖНО, хороший пример того как должен выглядеть язык. Но тогда программы на Java — это хороший пример как НЕЛЬЗЯ писать программы."

Опрос

Ваша техника?

Настольный компютер
Ноутбук
Смартфон
iPad
iPhone
другое