package com.example.finalproject;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;public class MainActivity extends Activity { private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button) findViewById(R.id.Music);
btn1.setOnClickListener(new OnClickListener()
{ public void onClick(View v)
{
Intent intent = new Intent();
intent.setClass(MainActivity.this, Music.class);
startActivity(intent);
MainActivity.this.finish();
} });
}}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import android.app.ListActivity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Handler;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class Music extends ListActivity {
private Button btn2;
private ImageButton FrontButton = null;
private ImageButton StopButton = null;
private ImageButton StartButton = null;
private ImageButton PauseButton = null;
private ImageButton NextButton = null;
Handler PercentHandler = new Handler();
private SeekBar SeekBar=null;
private TextView curProgressText=null;
private TextView curtimeAndTotaltime=null;
public MediaPlayer mMediaPlayer;
private List<String> mMusicList = new ArrayList<String>();
private int currentListItem = 0;
private static final String MUSIC_PATH = new String("/sdcard/");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.music_wel);
musicList();
mMediaPlayer = new MediaPlayer();
initmFrontMusic();
initStopMusic();
initStartMusic();
initPauseMusic();
initNextMusic();
initSeekBar();
btn2=(Button)findViewById(R.id.MusicReturn);
btn2.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent itent=new Intent();
itent.setClass(Music.this, MainActivity.class);
startActivity(itent);
Music.this.finish();
}
});
}
public void initmFrontMusic()
{
FrontButton = (ImageButton)findViewById(R.id.last);
FrontButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(--currentListItem >= 0){
currentListItem = mMusicList.size();
}else{
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
}
}
});
}
public void initStopMusic()
{
StopButton = (ImageButton)findViewById(R.id.stop);
StopButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying())
{
mMediaPlayer.reset();
}
}
});
}
public void initStartMusic()
{
StartButton = (ImageButton)findViewById(R.id.start);
StartButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
startSeekBarUpdate();
}
});
}
public void initPauseMusic()
{
PauseButton = (ImageButton)findViewById(R.id.pause);
PauseButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
}
else{
mMediaPlayer.start();
}
}
});
}
public void initNextMusic()
{
NextButton = (ImageButton)findViewById(R.id.next);
NextButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
nextMusic();
}
});
}
public void initSeekBar()
{
/*初始化拖动条和当前进度显示值*/
SeekBar=(SeekBar)findViewById(R.id.seekBar1);
curProgressText=(TextView)findViewById(R.id.currentProgress);
curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);
SeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
/* 如果拖动进度发生改变,则显示当前进度值 */
curProgressText.setText("当前进度: " + progress);
} public void onStartTrackingTouch(SeekBar arg0) {
curProgressText.setText("拖动中...");
} public void onStopTrackingTouch(SeekBar arg0) {
int dest = SeekBar.getProgress();
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax(); mMediaPlayer.seekTo(mMax*dest/sMax); }
});
}
private void playMusic(String path)
{
try {
mMediaPlayer.reset();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener(){ public void onCompletion(MediaPlayer arg0) {
nextMusic();
}
});
}catch (IOException e) {
e.printStackTrace();
}
}
private void nextMusic()
{
if(++currentListItem >= mMusicList.size())
{
currentListItem = 0;
}
else
{
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
mMediaPlayer.stop();
mMediaPlayer.release();
}
return super.onKeyDown(keyCode, event);
} @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentListItem = position;
playMusic(MUSIC_PATH + mMusicList.get(position));
super.onListItemClick(l, v, position, id);
} //播放列表
public void musicList()
{
File home = new File(MUSIC_PATH);
if(home.listFiles(new MusicFilter()).length > 0)
{
for(File file : home.listFiles(new MusicFilter()))
{
mMusicList.add(file.getName());
}
ArrayAdapter<String> musicList=new ArrayAdapter<String>(Music.this,R.layout.musicitem,mMusicList);
setListAdapter(musicList);
}
}
/*更新拖动条进度*/ public void startSeekBarUpdate() {
PercentHandler.post(start);
} Runnable start = new Runnable() { public void run() {
// 用一个handler更新SeekBar
PercentHandler.post(updatesb);
} }; Runnable updatesb =new Runnable(){ public void run() {
int position = mMediaPlayer.getCurrentPosition();
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax();
SeekBar.setProgress(position * sMax / mMax);
curtimeAndTotaltime.setText("当前播放时间: " + position / 1000 + "秒"
+ "\n歌曲总时间: " + mMax / 1000 + "秒");
// 每秒钟更新一次
PercentHandler.postDelayed(updatesb, 1000);
} };
//过滤文件类型
class MusicFilter implements FilenameFilter
{ public boolean accept(File dir, String name) {
//这里还可以设置其他格式的音乐文件
return (name.endsWith(".mp3"));
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.finalproject"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.finalproject.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.finalproject.Music"></activity>
</application></manifest>
—————————————————————————————————————————
基本都是照着书打出来的代码,在manifest里把2个用到的activity也注册了,可还是从主页面跳转进去的时候就崩溃出错了,请问各位这是什么原因?
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;public class MainActivity extends Activity { private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button) findViewById(R.id.Music);
btn1.setOnClickListener(new OnClickListener()
{ public void onClick(View v)
{
Intent intent = new Intent();
intent.setClass(MainActivity.this, Music.class);
startActivity(intent);
MainActivity.this.finish();
} });
}}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import android.app.ListActivity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Handler;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class Music extends ListActivity {
private Button btn2;
private ImageButton FrontButton = null;
private ImageButton StopButton = null;
private ImageButton StartButton = null;
private ImageButton PauseButton = null;
private ImageButton NextButton = null;
Handler PercentHandler = new Handler();
private SeekBar SeekBar=null;
private TextView curProgressText=null;
private TextView curtimeAndTotaltime=null;
public MediaPlayer mMediaPlayer;
private List<String> mMusicList = new ArrayList<String>();
private int currentListItem = 0;
private static final String MUSIC_PATH = new String("/sdcard/");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.music_wel);
musicList();
mMediaPlayer = new MediaPlayer();
initmFrontMusic();
initStopMusic();
initStartMusic();
initPauseMusic();
initNextMusic();
initSeekBar();
btn2=(Button)findViewById(R.id.MusicReturn);
btn2.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent itent=new Intent();
itent.setClass(Music.this, MainActivity.class);
startActivity(itent);
Music.this.finish();
}
});
}
public void initmFrontMusic()
{
FrontButton = (ImageButton)findViewById(R.id.last);
FrontButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(--currentListItem >= 0){
currentListItem = mMusicList.size();
}else{
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
}
}
});
}
public void initStopMusic()
{
StopButton = (ImageButton)findViewById(R.id.stop);
StopButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying())
{
mMediaPlayer.reset();
}
}
});
}
public void initStartMusic()
{
StartButton = (ImageButton)findViewById(R.id.start);
StartButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
startSeekBarUpdate();
}
});
}
public void initPauseMusic()
{
PauseButton = (ImageButton)findViewById(R.id.pause);
PauseButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
}
else{
mMediaPlayer.start();
}
}
});
}
public void initNextMusic()
{
NextButton = (ImageButton)findViewById(R.id.next);
NextButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
nextMusic();
}
});
}
public void initSeekBar()
{
/*初始化拖动条和当前进度显示值*/
SeekBar=(SeekBar)findViewById(R.id.seekBar1);
curProgressText=(TextView)findViewById(R.id.currentProgress);
curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);
SeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
/* 如果拖动进度发生改变,则显示当前进度值 */
curProgressText.setText("当前进度: " + progress);
} public void onStartTrackingTouch(SeekBar arg0) {
curProgressText.setText("拖动中...");
} public void onStopTrackingTouch(SeekBar arg0) {
int dest = SeekBar.getProgress();
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax(); mMediaPlayer.seekTo(mMax*dest/sMax); }
});
}
private void playMusic(String path)
{
try {
mMediaPlayer.reset();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener(){ public void onCompletion(MediaPlayer arg0) {
nextMusic();
}
});
}catch (IOException e) {
e.printStackTrace();
}
}
private void nextMusic()
{
if(++currentListItem >= mMusicList.size())
{
currentListItem = 0;
}
else
{
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
mMediaPlayer.stop();
mMediaPlayer.release();
}
return super.onKeyDown(keyCode, event);
} @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentListItem = position;
playMusic(MUSIC_PATH + mMusicList.get(position));
super.onListItemClick(l, v, position, id);
} //播放列表
public void musicList()
{
File home = new File(MUSIC_PATH);
if(home.listFiles(new MusicFilter()).length > 0)
{
for(File file : home.listFiles(new MusicFilter()))
{
mMusicList.add(file.getName());
}
ArrayAdapter<String> musicList=new ArrayAdapter<String>(Music.this,R.layout.musicitem,mMusicList);
setListAdapter(musicList);
}
}
/*更新拖动条进度*/ public void startSeekBarUpdate() {
PercentHandler.post(start);
} Runnable start = new Runnable() { public void run() {
// 用一个handler更新SeekBar
PercentHandler.post(updatesb);
} }; Runnable updatesb =new Runnable(){ public void run() {
int position = mMediaPlayer.getCurrentPosition();
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax();
SeekBar.setProgress(position * sMax / mMax);
curtimeAndTotaltime.setText("当前播放时间: " + position / 1000 + "秒"
+ "\n歌曲总时间: " + mMax / 1000 + "秒");
// 每秒钟更新一次
PercentHandler.postDelayed(updatesb, 1000);
} };
//过滤文件类型
class MusicFilter implements FilenameFilter
{ public boolean accept(File dir, String name) {
//这里还可以设置其他格式的音乐文件
return (name.endsWith(".mp3"));
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.finalproject"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.finalproject.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.finalproject.Music"></activity>
</application></manifest>
—————————————————————————————————————————
基本都是照着书打出来的代码,在manifest里把2个用到的activity也注册了,可还是从主页面跳转进去的时候就崩溃出错了,请问各位这是什么原因?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <Button
android:id="@+id/MusicReturn"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Button" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/last"
android:layout_alignParentLeft="true"
android:layout_marginBottom="44dp"
android:max="100"
android:progress="0"
android:secondaryProgress="0"
android:visibility="visible" />
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="200dip"
android:layout_weight="1"
android:drawSelectorOnTop="false" >
</ListView> <MediaController
android:id="@+id/mediaController1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="180dp" >
</MediaController> <ImageButton
android:id="@+id/last"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_above="@+id/MusicReturn"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/mediaController1"
android:src="@drawable/last" /> <ImageView
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/last"
android:layout_marginLeft="17dp"
android:layout_toRightOf="@+id/last"
android:src="@drawable/stop" /> <ImageButton
android:id="@+id/start"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_above="@+id/MusicReturn"
android:layout_marginLeft="18dp"
android:layout_toRightOf="@+id/stop"
android:src="@drawable/start" /> <ImageButton
android:id="@+id/pause"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_above="@+id/MusicReturn"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/start"
android:src="@drawable/pause" /> <ImageButton
android:id="@+id/next"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignTop="@+id/pause"
android:layout_toLeftOf="@+id/MusicReturn"
android:src="@drawable/next" /> <TextView
android:id="@+id/curtimeandtotaltime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/last"
android:layout_alignParentLeft="true"
android:layout_marginBottom="28dp" /> <TextView
android:id="@+id/currentProgress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/last"
android:layout_alignParentLeft="true"
android:layout_marginBottom="14dp" /></RelativeLayout>
————————————————————————————————————————
这个是播放器要用的xml文件,主界面的xml文件已经测试了没问题,现在不知道哪里出了问题导致崩溃