2014-07-19 70 views
1

我是新來的android世界。我正在開發一個應用程序,主屏幕上有6個按鈕,第二個屏幕上有5個按鈕。當用戶點擊這些按鈕時,主屏幕上的5個按鈕應該能夠播放音樂。每個按鈕都應該能夠播放與原始文件夾中的音樂相對應的不同音樂。主屏幕上的第6個按鈕應允許用戶轉到下一個屏幕(第二屏幕)。同樣,第二個屏幕上的5個按鈕應該播放與原始文件夾中的音樂相對應的音樂。請看我的代碼..我不知道我的代碼有什麼問題?如何播放主屏幕和第二屏幕上添加的音樂?

我主要的Java代碼如下所示...

public class MainActivity extends Activity implements OnClickListener{ 

    public class onClickListener implements OnClickListener {  

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent i = new Intent("com.example.playaudio.SecondActivity"); 
      startActivity(i); 

     }    
    } 

    public class onClick { 

    } 

    private MediaPlayer mp; 
    Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button = (Button) findViewById(R.id.buttonSwitch); 
     button.setOnClickListener(new onClickListener()); 
     setVolumeControlStream(AudioManager.STREAM_MUSIC); 
     Button button1=(Button)findViewById(R.id.button_1); 
     Button button2=(Button)findViewById(R.id.button_2); 
     Button button3=(Button)findViewById(R.id.button_3); 
     Button button4=(Button)findViewById(R.id.button_4); 
     Button button5=(Button)findViewById(R.id.button_5); 
     button1.setOnClickListener(this); 
     button2.setOnClickListener(this); 
     button3.setOnClickListener(this); 
     button4.setOnClickListener(this); 
     button5.setOnClickListener(this);  
    } 

    private void setOnClickListener(
      com.example.playaudio.MainActivity.onClick onClick) { 
     // TODO Auto-generated method stub  

    } 

    public static void onClick(View v) { 
     int resId; 
     switch (v.getId()) { 
     case R.id.button_1: 
      resId = R.raw.a; 
      break; 
     case R.id.button_2: 
      resId = R.raw.b; 
      break; 
     case R.id.button_3: 
      resId = R.raw.c; 
      break; 
     case R.id.button_4: 
      resId = R.raw.d; 
      break; 
     case R.id.button_5: 
      resId = R.raw.e; 
      break;  
     default: 
      resId = R.raw.a; 
      break; 
     } 

     // Release any resources from previous MediaPlayer 
     if (mp != null) { 
      mp.release(); 

     } 
     // Create a new MediaPlayer to play this sound 
     mp = MediaPlayer.create(this, resId); 
     mp.start(); 
    } 

    { 
      startActivity(new Intent(MainActivity.this,SecondActivity.class)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 

    } 


    @Override 

    protected void onDestroy() { 
     if(null!=mp){ 
      mp.release(); 
     } 
     super.onDestroy(); 
    } 
} 

第二個屏幕Java類

import com.example.playaudio.MainActivity.onClick; 

import android.app.Activity; 

import android.content.Intent; 

import android.media.AudioManager; 

import android.media.MediaPlayer; 

import android.os.Bundle; 

import android.view.Menu; 

import android.view.View; 

import android.view.View.OnClickListener; 

import android.widget.Button; 

public class SecondActivity extends Activity 

{ 

@Override 

protected void onCreate(Bundle savedInstanceState) 

{ 

// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 




setContentView(R.layout.activity_second); 




b= (Button) findViewById (R.id.buttonSwitch); 




b.setOnClickListener(new onClick()); 




setVolumeControlStream(AudioManager.STREAM_MUSIC); 




Button button7=(Button)findViewById(R.id.button7); 




Button button8=(Button)findViewById(R.id.button8); 




Button button9=(Button)findViewById(R.id.button9); 




Button button10=(Button)findViewById(R.id.button10); 




Button button11=(Button)findViewById(R.id.button11); 




button7.setOnClickListener((OnClickListener) this); 




button8.setOnClickListener((OnClickListener) this); 




button9.setOnClickListener((OnClickListener) this); 




button10.setOnClickListener((OnClickListener) this); 




button11.setOnClickListener((OnClickListener) this); 

} 

public void onClick(View v) { 

int resId; 

switch (v.getId()) { 




case R.id.button7: 




    resId = R.raw.f; 




    break; 




case R.id.button8: 




    resId = R.raw.g; 




    break; 




case R.id.button9: 




    resId = R.raw.h; 




    break; 




case R.id.button10: 




    resId = R.raw.i; 




    break; 




case R.id.button11: 




    resId = R.raw.j; 




    break; 




default: 




    resId = R.raw.a; 




    break; 




} 




{ 




    startActivity(new Intent(MainActivity.this,SecondActivity.class)); 




} 
+0

只需複製和粘貼,與複製文本相同,並不難。我真的不明白爲什麼很多人會遇到麻煩。 –

+0

@ Xaver Kapeller ...我嘗試過,但它不工作.... – user3856054

+0

在這裏只複製和粘貼代碼失敗的可能性如何?就像用文字一樣複製它。即使你無法正確格式化,別人也會修復它。 –

回答

0

我認爲你沒有準備好您的媒體播放器。我給你留下一個可行的代碼。我總是準備同一首歌。請記住,通過音樂更改它,並創建一個「assets」文件夾,您可以在其中放置「.mp3」文件。

public class MediaPlayerActivity extends ActionBarActivity implements View.OnClickListener { 

private Button mButton1; 
private Button mButton2; 
private Button mButton3; 
private Button mButton4; 
private Button mButton5; 
private Button mButton6; 
private MediaPlayer mPlayer; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    mButton1 = (Button) findViewById(R.id.button1); 
    mButton2 = (Button) findViewById(R.id.button2); 
    mButton3 = (Button) findViewById(R.id.button3); 
    mButton4 = (Button) findViewById(R.id.button4); 
    mButton5 = (Button) findViewById(R.id.button5); 
    mButton6 = (Button) findViewById(R.id.button6); 

    mButton1.setOnClickListener(this); 
    mButton2.setOnClickListener(this); 
    mButton3.setOnClickListener(this); 
    mButton4.setOnClickListener(this); 
    mButton5.setOnClickListener(this); 
    mButton6.setOnClickListener(this); 

} 

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.button1: 
      playMusic("lori.mp3"); 
      break; 
     case R.id.button2: 
      playMusic("lori.mp3"); 
      break; 
     case R.id.button3: 
      playMusic("lori.mp3"); 
      break; 
     case R.id.button4: 
      playMusic("lori.mp3"); 
      break; 
     case R.id.button5: 
      playMusic("lori.mp3"); 
      break; 
     case R.id.button6: 
      Intent intent = new Intent(this, SecondActivity.class); 
      startActivity(intent); 
      break; 
    } 
} 

private void playMusic(String songName) { 
    if (mPlayer != null && mPlayer.isPlaying()) { 
     mPlayer.stop(); 
     mPlayer.release(); 
     mPlayer = null; 
    } 

    try { 
     mPlayer = new MediaPlayer(); 
     mPlayer.reset(); 
     AssetFileDescriptor descriptor = getAssets().openFd(songName); 
     mPlayer.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); 
     mPlayer.prepare(); 
     mPlayer.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

}

我希望它爲你工作。請記住,如果此代碼適合您,請將答案標記爲正確。謝謝!

+0

我是否必須將所有的mp3添加到assests文件夾? – user3856054

+0

是的,你可以把你所有的歌曲放在那裏。 – juanjo

+0

@ Juan ....你會如何建議將主屏幕連接到第二屏幕......我的意思是我應該在主屏幕按鈕號碼6上放置什麼代碼。以便當用戶單擊主屏幕上的第6個按鈕時。它應該顯示用戶第二個屏幕,其中也有5個按鈕... – user3856054

相關問題