A
Acedude
Neues Mitglied
- 0
Hallo
ich habe folgendes Problem.. ich habe ein Programm mit Java geschrieben. Dieses Programm würde ich jetzt gerne auch als App auf meinem Samsung Galaxy S3 (Android)haben. Habe mich mal selbst daran versucht, aber eine App zu schreiben ist doch weit schwieriger als ich dachte. Mein Programm kann folgendes:
1) Abfrage, wann das Video gestoppt werden kann (Zeitpunkt t)
2) Video abspielen
3) Video wird zum Zeitpunkt t gestoppt
4) Es werden einige Eingaben gemacht und das Video läuft weiter
5) Nachdem das Video zu Ende ist, öffnet sich ein sogenanntes "Ergebnisfenster". Da werden halt die bisher eingegebenen Daten mit den Lösungen verglichen und neben einem Bild angezeigt.
Hier ist mal der Code:
So.. ich hoffe mittels meiner Kommentare ist es halbwegs verständlich. Jetzt meine Frage. ICh weiß ja, dass Java Kenntnisse bei der App Programmierung von Vorteil sind. Deswegen würde mich interessieren, welchen Teil von diesem Code könnte ich so lassen und welchen Teil müsste ich für die App ändern?
Also ich lese ja zum Beispiel Daten aus einer Textdatei aus, spiele das Video mit dem JMF Player ab, benutze JOPtionEingabe und Ausgabefenster etc. Ist das auch bei der Android Programmierung möglich?
Gruß Chuck
ich habe folgendes Problem.. ich habe ein Programm mit Java geschrieben. Dieses Programm würde ich jetzt gerne auch als App auf meinem Samsung Galaxy S3 (Android)haben. Habe mich mal selbst daran versucht, aber eine App zu schreiben ist doch weit schwieriger als ich dachte. Mein Programm kann folgendes:
1) Abfrage, wann das Video gestoppt werden kann (Zeitpunkt t)
2) Video abspielen
3) Video wird zum Zeitpunkt t gestoppt
4) Es werden einige Eingaben gemacht und das Video läuft weiter
5) Nachdem das Video zu Ende ist, öffnet sich ein sogenanntes "Ergebnisfenster". Da werden halt die bisher eingegebenen Daten mit den Lösungen verglichen und neben einem Bild angezeigt.
Hier ist mal der Code:
Code:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.RestartingEvent;
import javax.media.StopByRequestEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class TEST {
/**
* @param args
*/
public static void main(String args[]) throws IOException, NoPlayerException, CannotRealizeException {
int gewonnen = 0;
int verloren = 0;
int ergebnis = 0;
int gewinn = 0;
int verlust = 0;
// int[] vorher = new int[198];
// int[] nachher = new int[198];
// int[] nummer = new int[198];
// boolean prüfen = false;
boolean b = true;
while (b)
{
[B]// ES WIRD EIN ZUFÄLLIGES VIDEO AUSGEWÄHLT[/B]
int i = (int)(Math.random()*197) + 1;
URL mediaURL = new File("c:/Test/" + i + ".mpg").toURI().toURL();
[B]// DIE PASSENDE LÖSUNG WIRD DAZU RAUS GESUCHT [/B]
FileReader fr = new FileReader("c:/Roulette/loesungen.txt");
BufferedReader br = new BufferedReader(fr);
String zeile = br.readLine();
for (int a = 1; a != i;a++)
{
zeile = br.readLine();
}
br.close();
final Player mediaPlayer = Manager.createRealizedPlayer(mediaURL);
Component video = mediaPlayer.getVisualComponent();
Component controls = mediaPlayer.getControlPanelComponent();
[B]// VIDEOLÄNGE WIRD ERMITTELT [/B]
int dur = (int)mediaPlayer.getDuration().getSeconds();
String zeit = JOptionPane.showInputDialog(null, "Wieviel Sekunden bevor das Video zuende ist, soll es gestoppt werden? (max. " + dur + ")");
if (zeit == null || "".equals(zeit))
{
zeit = "10";
}
int time = Integer.parseInt(zeit);
int stop = dur - time;
final String[] test = new String[1];
final String[] test2 = new String[1];
[B] // VIDEO WIRD GESTARTET[/B]
if (mediaURL != null)
{
JFrame mediaTest = new JFrame(mediaURL.getFile());
mediaPlayer.start();
mediaTest.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
mediaTest.add(video);
mediaTest.getTitle();
mediaTest.add( video, BorderLayout.CENTER );
mediaTest.add( controls, BorderLayout.SOUTH );
// mediaTest.setSize(1000, 1000);
mediaTest.setExtendedState(JFrame.MAXIMIZED_BOTH);
mediaTest.setVisible(true);
[B]// TIMER WIRD GESTARTET, DAMIT DAS VIDEO RECHTZEITIG STOPPT [/B]
final Timer timer = new Timer(stop*1000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
[B]// ES WERDEN EINGABEN GEMACHT [/B]
mediaPlayer.stop();
test[0] = JOptionPane.showInputDialog(null, "Vermutung?");
test2[0] = JOptionPane.showInputDialog(null, "Wieviele Nachbarn auf jeder Seite? (max. 4)");
if (test2[0] == null || "".equals(test2[0]))
{
test2[0] = "0";
}
if (test[0] == null || "".equals(test[0]))
{
test[0] = "-1";
}
mediaPlayer.start();
((Timer)evt.getSource()).stop();
}
});
timer.start();
final Object LOCK = new Object();
mediaPlayer.addControllerListener (new ControllerListener(){
public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof javax.media.StopEvent && !(event instanceof RestartingEvent) && !(event instanceof StopByRequestEvent)) {
synchronized (LOCK){
LOCK.notifyAll();
}
}
}
});
synchronized (LOCK){
try{
[B]// VIDEO IST ZUENDE UND ES WERDEN DIE ERGEBNISSE ERMITTELT[/B]
LOCK.wait();
//JFRAME FENSTER SCHLIEßEN
mediaTest.setVisible(false);
// Abstand
FileReader fr2 = new FileReader("c:/Roulette/abstand.txt");
BufferedReader br2 = new BufferedReader(fr2);
String abstand = br2.readLine();
int abstand2 = 0;
int nachbarn = Integer.parseInt(test2[0]);
int vermutung = Integer.parseInt(test[0]);
if ((vermutung <= 36 && vermutung >= 0) && (nachbarn < 19 && nachbarn >=0))
{
if (vermutung == 0)
{
abstand = br2.readLine();
while (!test[0].equals(abstand))
{
abstand = br2.readLine();
if (test[0].equals(abstand))
{
while (!zeile.equals(abstand))
{
abstand = br2.readLine();
abstand2++;
if (zeile.equals(abstand))
{
break;
}
}
break;
}
}
}
else
{
while (!test[0].equals(abstand))
{
abstand = br2.readLine();
if (test[0].equals(abstand))
{
while (!zeile.equals(abstand))
{
abstand = br2.readLine();
abstand2++;
if (zeile.equals(abstand))
{
break;
}
}
break;
}
}
}
br2.close();
if (abstand2 > 18)
{
abstand2 = 37 - abstand2;
}
[B] // ERGEBNISANZEIGE (LINKS DAS BILD UND RECHTS DIE ZAHLEN)[/B]
if (abstand2 <= nachbarn)
{
gewinn = 35 - ((nachbarn*2) +1);
ergebnis = (ergebnis + 35) - ((nachbarn*2) +1);
gewonnen++;
JOptionPane.showMessageDialog(null, "Vermutung: " + test[0] + " (+"+test2[0]+ ")" + "\nLösung: "+ zeile + "\nAbstand: " + abstand2 + "\n!!!GEWONNEN!!!\n \nGewinn: " + gewinn + "\nKapital: " + ergebnis + "\n \nGewonnen: " + gewonnen + "\nVerloren: " + verloren, "Ergebnis", 0, new ImageIcon("c:/Roulette/roulette.jpg"));
}
else
{
verlust = ((nachbarn*2) +1);
ergebnis = ergebnis - ((nachbarn*2) +1);
verloren++;
JOptionPane.showMessageDialog(null, "Vermutung: " + test[0] + " (+"+test2[0]+ ")" + "\nLösung: "+ zeile + "\nAbstand: " + abstand2 + "\n!!!VERLOREN!!!\n \nVerlust: -" + verlust + "\nKapital: " + ergebnis + "\n \nGewonnen: " + gewonnen + "\nVerloren: " + verloren, "Ergebnis", 0, new ImageIcon("c:/Roulette/roulette.jpg"));
}
}
else
{
JOptionPane.showMessageDialog(null,"Lösung: "+ zeile + "\nungültige Eingabe!\n \nKapital: " + ergebnis + "\n \nGewonnen: " + gewonnen + "\nVerloren: " + verloren, "Ergebnis", 0, new ImageIcon("c:/Roulette/roulette.jpg"));
}
}
catch (InterruptedException ie)
{
Thread.currentThread().interrupt();
}
}
[B] // Wiederholungsabfrage[/B]
int repeat = JOptionPane.showConfirmDialog(null,
"Nächstes Video?",
"Wiederholung",
JOptionPane.YES_NO_OPTION);
if (repeat == JOptionPane.YES_OPTION )
{
b = true;
}
else
{
b = false;
}
}
}
}
}
So.. ich hoffe mittels meiner Kommentare ist es halbwegs verständlich. Jetzt meine Frage. ICh weiß ja, dass Java Kenntnisse bei der App Programmierung von Vorteil sind. Deswegen würde mich interessieren, welchen Teil von diesem Code könnte ich so lassen und welchen Teil müsste ich für die App ändern?
Also ich lese ja zum Beispiel Daten aus einer Textdatei aus, spiele das Video mit dem JMF Player ab, benutze JOPtionEingabe und Ausgabefenster etc. Ist das auch bei der Android Programmierung möglich?
Gruß Chuck
Zuletzt bearbeitet von einem Moderator: