2015-08-13 2 views
-3

Я хочу играть музыку в своем приложении, когда приложение запускается. Я пробовал много кодов, но ничего не работает для меня, и я не получаю никаких ошибок. Может кто-нибудь, пожалуйста, помогите мне в этом вопросе. Спасибо заранее.как играть в звук в android

public class Login extends Activity { 

EditText edName, edPassword; 
String userName,password; 
MediaPlayer mp; 


@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 

    mp = MediaPlayer.create(getApplicationContext(), R.raw.startsound); 

    ActionBar actionBar = getActionBar(); 
    actionBar.hide(); 

    edName = (EditText) findViewById(R.id.editText1); 
    edPassword = (EditText) findViewById(R.id.editText2); 
    mp.start(); 
} 
public void SignInClick(View V) { 

    userName = edName.getText().toString(); 
    password = edPassword.getText().toString(); 
    if (userName.equals("")) { 
     Toast.makeText(Login.this, "Username is empty", Toast.LENGTH_LONG).show();} 
    else if (password.equals("")) { 
     Toast.makeText(Login.this, "Password is empty", Toast.LENGTH_LONG).show(); 
    } 
    else { 
    Intent intent=new Intent(Login.this,Home.class); 
    startActivity(intent); 
    }  

}

+0

Try поставить mp.prepare(), прежде чем mp.start() –

+5

Пытаясь понять, работает лучше, чем бессмысленные копирования/вставки, в моем опыте. – 2Dee

+0

Поскольку вы расширяете класс активности Activity, а не класс ActionBarAcivity, ActionBar actionBar = getActionBar(); actionBar.hide(); строка actionBar.hide() выкинет исключение NullPointerException – Bhargav

ответ

0

Надеется, что это помогает, и должна быть рабочим примером, хотя у меня не было возможность проверить это.

public static Music theme; 
theme = createMusic("menutheme.mp3"); 
theme.setLooping(true); 
theme.setVolume(0.85f); 
theme.play(); 




public Music createMusic(String filename) { 
     try { 
      AssetFileDescriptor assetDescriptor = assets.openFd(filename); 
      return new AndroidMusic(assetDescriptor); 
     } catch (IOException e) { 
      throw new RuntimeException("Couldn't load music '" + filename + "'"); 
     } 
    } 


import android.content.res.AssetFileDescriptor; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.media.MediaPlayer.OnPreparedListener; 
import android.media.MediaPlayer.OnSeekCompleteListener; 
import android.media.MediaPlayer.OnVideoSizeChangedListener; 
import com.matt.framework.Music; 
import java.io.IOException; 

public class AndroidMusic implements Music, OnCompletionListener, OnSeekCompleteListener, OnPreparedListener, OnVideoSizeChangedListener { 
    MediaPlayer mediaPlayer; 
    boolean isPrepared = false; 

    public AndroidMusic(AssetFileDescriptor assetDescriptor) { 
     mediaPlayer = new MediaPlayer(); 
     try { 
      mediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(), 
        assetDescriptor.getStartOffset(), 
        assetDescriptor.getLength()); 
      mediaPlayer.prepare(); 
      isPrepared = true; 
      mediaPlayer.setOnCompletionListener(this); 
      mediaPlayer.setOnSeekCompleteListener(this); 
      mediaPlayer.setOnPreparedListener(this); 
      mediaPlayer.setOnVideoSizeChangedListener(this); 

     } catch (Exception e) { 
      throw new RuntimeException("Couldn't load music"); 
     } 
    } 

    @Override 
    public void dispose() { 

     if (this.mediaPlayer.isPlaying()){ 
      this.mediaPlayer.stop(); 
     } 
     this.mediaPlayer.release(); 
    } 

    @Override 
    public boolean isLooping() { 
     return mediaPlayer.isLooping(); 
    } 

    @Override 
    public boolean isPlaying() { 
     return this.mediaPlayer.isPlaying(); 
    } 

    @Override 
    public boolean isStopped() { 
     return !isPrepared; 
    } 

    @Override 
    public void pause() { 
     if (this.mediaPlayer.isPlaying()) 
      mediaPlayer.pause(); 
    } 



    @Override 
    public void play() { 
     if (this.mediaPlayer.isPlaying()) 
      return; 

     try { 
      synchronized (this) { 
       if (!isPrepared) 
        mediaPlayer.prepare(); 
       mediaPlayer.start(); 
      } 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void setLooping(boolean isLooping) { 
     mediaPlayer.setLooping(isLooping); 
    } 

    @Override 
    public void setVolume(float volume) { 
     mediaPlayer.setVolume(volume, volume); 
    } 

    @Override 
    public void stop() { 
     if (this.mediaPlayer.isPlaying() == true){ 
      this.mediaPlayer.stop(); 

      synchronized (this) { 
       isPrepared = false; 
      }} 
    } 

    @Override 
    public void onCompletion(MediaPlayer player) { 
     synchronized (this) { 
      isPrepared = false; 
     } 
    } 

    @Override 
    public void seekBegin() { 
     mediaPlayer.seekTo(0); 

    } 


    @Override 
    public void onPrepared(MediaPlayer player) { 
     // TODO Auto-generated method stub 
     synchronized (this) { 
      isPrepared = true; 
     } 

    } 

    @Override 
    public void onSeekComplete(MediaPlayer player) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onVideoSizeChanged(MediaPlayer player, int width, int height) { 
     // TODO Auto-generated method stub 

    } 
} 
+0

Спасибо, что много :) – Andrain

Смежные вопросы