View unanswered posts | View active topics It is currently 25 Jun 2017, 13:35



Reply to topic  [ 7 posts ] 
 Αναπαράγοντας ήχο και βίντεο 
Author Message
Site Admin
User avatar

Joined: 24 May 2008, 23:50
Posts: 626
Location: Athens
Post Αναπαράγοντας ήχο και βίντεο
Εισαγωγή:
Η πλατφόρμα του Android έχει δυνατές ικανότητες multimedia όπως θα περιμένατε απο ένα μοντέρνο λειτουργικό σύστημα. Η χρήση των multimedia ικανοτήτων είναι "τυφλοσούρτη" καθώς δεν διαφέρει απο τους υπόλοιπους μηχανισμούς που χρησιμοποιεί το Android.

Το Android είναι ικανό να αναπαράγει ήχο και βίντεο. Είναι επίσης ικανό να αναπαράγει πολυμέσα τα οποία περιλαμβάνονται στα resources της εφαρμογής, σαν απλά αρχεία στο σύστημα αρχείων της συσκευής ή ακόμα και να κάνει streaming πάνω απο μια σύνδεση. Η αναπαραγωγή γίνεται με την χρήση της κλάσης android.media.MediaPlayer.

Σημείωση: Μπορείτε να αναπαράγετε τα αρχεία μόνο στην προκαθορισμένη συσκευή εξόδου που προς το παρών είναι το ηχείο της συσκευής ή το Bluetooth headset.

Αναπαράγοντας ένα Raw Resource:
Το πιο συνηθισμένο πράγμα που μπορεί να θέλετε να κάνετε είναι να αναπαράγετε ήχο στην εφαρμογή σας. Αυτό είναι αρκετά εύκολο:

1. Τοποθετήστε το αρχείο ήχου (ή το video) μέσα στον φάκελο res/raw του project και το Eclipse plugin θα το βρεί και αυτόματα θα το βάλει σαν resource στην κλάση R.class.

2. Δημιουργήστε ένα στιγμιότυπο της κλάσης MediaPlayer, το οποίο να αναφαίρετε στο αρχείο μέσω της μεθόδου MediaPlayer.create και κατόπιν καλέστε την μέθοδο start() του στιγμιότυπου.

παράδειγμα:
Code:
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();


Για να σταματήσει η αναπαραγωγή καλέστε την μέθοδο stop(). Εαν θέλετε να αναπαράγετε αργότερα ξανά το αρχείο, τότε πρέπει να καλέσετε τις μεθόδους reset() και prepare() του MediaPlayer πριν καλέσετε την start() ξανά.
Η μέθοδος create() καλεί την prepare() την πρώτη φορά.

Για να σταματήσετε προσωρινά την αναπαραγωγή, καλέστε την μέθοδο pause(). Συνεχίστε την αναπαραγωγή απο το σημείο που σταματήσατε με την start().

Αναπαράγοντας ένα αρχείο ήχου:

Μπορείτε να αναπαράγετε αρχεία απο το filesystem ή απο ένα URL:
1. Δημιουργήστε ένα στιγμοιότυπο του MediaPlayer χρησιμοποιόντας την new
2. Καλέστε την μέθοδο setDataSource() βάζοντας σαν όρισμα ένα String με το μονοπάτι (το τοπικό σύστημα αρχείων ή το URL) του αρχείου που θέλετε να αναπαράγετε.
3. Καλέστε την prepare() και μετά την start() του στιγμοιότυπου:

Code:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE); //mp.setDataSource("http://server/sound.wav");
mp.prepare();
mp.start();


Οι μέθοδοι stop() και pause() λειτουργούν ακριβώς όπως περιγράψαμε παραπάνω.

Σημαντικές παρατηρήσεις:
Είναι πιθανό το mp να είναι null και θα πρέπει να το ελέγξετε μετά την δημιουργία του. Επίσης πρέπει να πιάσετε τα exceptions IllegalArgumentException και IOException κατα την χρήση του setDataSource(), καθώς το αρχείο που δίνετε σαν παράμετρο μπορεί να μην υπάρχει.

Στην έκδοση M5 SDK, εαν δώσετε σαν παράμετρο ένα URL το αρχείο πρέπει να είναι τύπου .mp4 ή .3gp. Μελλοντικές εκδόσεις θα υποστηρίζουν το streaming ακόμα περισσότερων αρχείων.

Καλές αναπαραγωγές! (απο το http://code.google.com/android/toolbox/apis/media.html)

_________________
Chief Software Engineer @ PinApps.com
Κωνσταντίνος Πολυχρόνης http://www.kospol.gr
Πρόσθεσε την εφαρμογή σου: http://greekandroidapps.gr/


01 Jul 2008, 10:55
Profile WWW

Joined: 16 Oct 2008, 19:40
Posts: 9
Post Re: Αναπαράγοντας ήχο και βίντεο
Γεια σου Κωνσταντίνε. Κωνσταντίνος και πάλι.
Θα επαναλάβω και εδώ την ερώτηση που σου έκανα στο mail...

Εκτός από ένα activity που θα ενεργοποιεί αυτό το πρόγραμμα θα πρέπει να φτιάξω και μια κατάλληλη πλατφόρμα? Με την έννοια της πλατφόρμας εννοώ κουμπιά play, stop κλπ... τα οποία θα έχουν κώδικα actionListener ή παραπλήσιο?

Πάντως έτσι ωμά που έβαλα τον κώδικα και ακολούθησα τις οδηγίες με το φάκελο raw και το αρχείο ήχου, το πρόγραμμα δεν δουλεψε...
Οφείλω να παραδεχτώ ότι είναι αρκετά έξυπνο το SDK και τα πιάνει!!!

Επίσης στο instant MediaPlayer το Context context τι θα περιέχει? Εγώ το έβαλα null γιατί δεν έχω ιδέα τι θα πρέπει να είναι....

Τι μπορώ να κάνω?


26 Oct 2008, 22:28
Profile
Site Admin
User avatar

Joined: 24 May 2008, 23:50
Posts: 626
Location: Athens
Post Re: Αναπαράγοντας ήχο και βίντεο
Μπορείς να διαβάσεις το documentation του Android για τα περισσότερα ερωτήματα σου.
Για το Context πχ δες εδώ: http://code.google.com/android/referenc ... ntext.html

Το Context το αφήνεις όπως έχει, το παίρνει απο το activity...

Για το πρώτο ερώτημα, θα πρέπει να φτιάξεις τον player και ενα activity το οποίο θα το χειρίζεται... Αυτό είναι καθαρά σχεδιαστικό όμως, μπορεί να μην το θες/χρειάζεσαι!

_________________
Chief Software Engineer @ PinApps.com
Κωνσταντίνος Πολυχρόνης http://www.kospol.gr
Πρόσθεσε την εφαρμογή σου: http://greekandroidapps.gr/


28 Oct 2008, 03:28
Profile WWW

Joined: 16 Oct 2008, 19:40
Posts: 9
Post Re: Αναπαράγοντας ήχο και βίντεο
Λοιπόν, πριν πω σε πιο σημείο έφτασα την εφαρμογή μέχρι να μου κολλήσει, θα σου πω από πιο σημείο την ξανα-ξεκίνησα...

Αρχικά έφτιαξα μια νέα εφαρμογή όπου χρησιμοποιώ μόνο μια κλάση την οποία και θεωρώ (extended) σαν Activity. Στο onCreate της δημιουργώ το GUI (από το R.main) το οποίο είναι πολύ λιτό και περιλαμβάνει, εκτός από ένα textακι με τον τίτλο της εφαρμογής, 2 κουμπάκια (play, stop) και ένα πεδίο το οποίο με ενημερώνει για το ότι πατήθηκε το τάδε κουμπί ή το δείνα (play ή stop κλπ). Αυτό το έβαλα περισσότερο για να δω αν μπαίνει στο στην αντίστοιχη function startMusic ή stopMusic...

 Από πλευράς κουμπιών και από πλευράς functions όλα δείχνουν μια χαρά... Το αρχειάκι όμως με τη μουσική δε λέει να παίξει... μήπως πρέπει να κάνω κάτι στο manifest? Ίσως να το δηλώσω σαν resource?.... Δεν ξέρω... Ο κώδικας που έχω χρησιμοποιήσει είναι ο εξής...

Code:
package com.android.PlayDoh;

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class PlayDoh extends Activity{
   private android.media.MediaPlayer musicPlayer;
   private android.content.Context context;
   
   
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b1 = (Button) findViewById(R.id.play);
        Button b2 = (Button) findViewById(R.id.stop);
      
      try{
         musicPlayer = MediaPlayer.create(context, R.raw.hop);
         musicPlayer.prepare();
         musicPlayer.setLooping(true);
         musicPlayer.seekTo(0);
      }
      catch(Exception e){
      }
      
      b1.setOnClickListener(new View.OnClickListener(){
         public void onClick(View arg0) {
            startMusic();
         }
      });
            

      
      b2.setOnClickListener(new View.OnClickListener(){
         public void onClick(View arg0) {
            
            stopMusic();
         }
      });
      
   }
   
   public void startMusic(){
      EditText playText = (EditText) findViewById(R.id.EditText01);
      
      try{
         playText.setText("Player is playing");
         musicPlayer.prepare();
         musicPlayer.start();
      }
      catch(Exception e){
      }
   }
   public void stopMusic(){
      EditText stopText = (EditText) findViewById(R.id.EditText01);
      
      try{
         stopText.setText("Player is stoped");
         musicPlayer.stop();
      }
      catch(Exception e){
      }
   }
}


31 Oct 2008, 16:54
Profile
Site Admin
User avatar

Joined: 24 May 2008, 23:50
Posts: 626
Location: Athens
Post Re: Αναπαράγοντας ήχο και βίντεο
Όταν λες δεν παίζει, εννοείς οτι δεν ακούς κάτι;;;

Δοκίμασες να βάλεις να παίξει ενα αρχείο ήχου που θα κατεβάσει απο κάποιο url;

_________________
Chief Software Engineer @ PinApps.com
Κωνσταντίνος Πολυχρόνης http://www.kospol.gr
Πρόσθεσε την εφαρμογή σου: http://greekandroidapps.gr/


31 Oct 2008, 17:58
Profile WWW

Joined: 16 Oct 2008, 19:40
Posts: 9
Post Re: Αναπαράγοντας ήχο και βίντεο
Τον είδες τον κώδικα ε? Πώς σου φάνηκε? Πιστεύεις ότι κάτι δεν είναι σωστά γραμμένο???
Όσον αφορά τον κώδικα για URL, ναι μεν τον δοκίμασα αλλά η αλήθεια είναι ότι δεν πέτυχε γιατί δεν έβαλα κανονικό URL αλλά τοποθεσία από τον Mac μου...
Τεσπα... όπως και να χει δεν ακούγεται το αρχείο ήχου και ας το δοκίμασα και σε διάφορα μεγέθη και σε διάφορα formats...


02 Nov 2008, 19:45
Profile
Site Admin
User avatar

Joined: 24 May 2008, 23:50
Posts: 626
Location: Athens
Post Re: Αναπαράγοντας ήχο και βίντεο
Για να επιβεβαιώσω μια μικρή υποψία που είχα, έκανα το εξής απλό παράδειγμα:

Code:
package gr.androiddev.test;

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;

public class SoundTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MediaPlayer mp = new MediaPlayer();
        try {
      mp.setDataSource("http://ventrix.nsdc.gr/stuff/TERMITES_SKONH.mp3");
           mp.prepare();
           mp.start();
      } catch (IllegalArgumentException e) {
         e.printStackTrace();
      } catch (IllegalStateException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
    }
}

Η υποψία που είχα εξαρχής επιβεβαιώθηκε. Ο emulator απλά δεν "παίζει" την μουσική :)

Υπάρχει μια πιθανότητα να καταφέρεις να ακούσεις ήχο. Δες εδώ: http://groups.google.com/group/android- ... 54a4?pli=1και εδώ: http://code.google.com/android/referenc ... up-options

Εγώ στο Debian, άνοιξα το Run configuration, και πρόσθεσα στο Addition Emulator Command Line Options την γραμμή "-audio oss" και τώρα ακούω το τραγούδι:)

_________________
Chief Software Engineer @ PinApps.com
Κωνσταντίνος Πολυχρόνης http://www.kospol.gr
Πρόσθεσε την εφαρμογή σου: http://greekandroidapps.gr/


14 Nov 2008, 12:41
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 7 posts ] 

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware.