返回信息流在看《深入浅出Google Android》这本书,书上的TinyPlayer播放器例子是在程序里面给定了一个网络音频地址,然后播放
我在主界面新加了一个按钮,想通过点击这个按钮进入另外一个Activity,然后输入音频地址,然后播放
这是我主界面的Activity,设定的按钮ID是open,不过在模拟器运行后,点击Open不能进入输入音频地址的Activity
哪个同学能帮帮忙,看看我程序错在哪里?
完整源程序在附件里面
package com.tang.tinyplayer3;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
public class Player extends Activity {
ImageButton playPauseBtn;
ImageButton stopBtn;
ImageButton openBtn;
OnClickListener listener;
UpdateReceiver doUpdate;
ContentResolver resolver;
int status;
Uri nowPlaying;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
playPauseBtn = (ImageButton)findViewById(R.id.playorpause);
stopBtn = (ImageButton)findViewById(R.id.stop);
openBtn=(ImageButton)findViewById(R.id.open);
/*定义按钮单击事件的监听器*/
listener = new OnClickListener() {
@Override
public void onClick(View view) {
int cmd = 0;
Intent i = new Intent(MusicPlayService.MUSIC_CONTROL);
switch (view.getId()) {
case R.id.playorpause:
if (status == MusicPlayService.STATUS_PLAYING) {
/*若是当前正在播放时,就暂停*/
cmd = MusicPlayService.CMD_PAUSE;
} else if (status == MusicPlayService.STATUS_STOPPED){
/*若是停止状态,就把Uri装入并播放*/
i.setData(nowPlaying);
cmd = MusicPlayService.CMD_PLAY;
} else {
/*若是暂停状态,就继续播放*/
cmd = MusicPlayService.CMD_PLAY;
}
break;
case R.id.open:
Intent intent=new Intent();
intent.setClass(Player.this,Input.class);
startActivity(intent);
cmd=MusicPlayService.CMD_STOP;
break;
case R.id.stop:
cmd = MusicPlayService.CMD_STOP;
break;
default:
break;
}
i.putExtra("cmd", cmd);
sendBroadcast(i);
}
};
openBtn.setOnClickListener(listener);
playPauseBtn.setOnClickListener(listener);
stopBtn.setOnClickListener(listener);
doUpdate = new UpdateReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(MusicPlayService.UPDATE_STATUS);
registerReceiver(doUpdate,filter);
startService(new Intent(this,MusicPlayService.class));
}
/*更新用户界面的Broadcast Receiver*/
public class UpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
status = intent.getIntExtra("status", -1);
switch (status) {
case MusicPlayService.STATUS_PLAYING:
playPauseBtn.setImageResource(R.drawable.pauseselector);
break;
case MusicPlayService.STATUS_PAUSED:
case MusicPlayService.STATUS_STOPPED:
playPauseBtn.setImageResource(R.drawable.playselector);
break;
default:
break;
}
}
}
}
附件(144.1KB) TinyPlayer3.zip
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #368同步于 2010/3/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
Android小程序开发求助
tt82238971
2010/3/30镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
把logcat报错信息发上来看看?
【 在 tt82238971 (可以是中文) 的大作中提到: 】
: 在看《深入浅出Google Android》这本书,书上的TinyPlayer播放器例子是在程序里面给定了一个网络音频地址,然后播放
: 我在主界面新加了一个按钮,想通过点击这个按钮进入另外一个Activity,然后输入音频地址,然后播放
: 这是我主界面的Activity,设定的按钮ID是open,不过在模拟器运行后,点击Open不能进入输入音频地址的Activity
: ...................
楼主的意思是点击OPEN按钮后进入一个自建的新界面,然后再这个界面自行输入音频地址,然后由播放器播放?还是说,点击OPEN按钮后吧一个音频地址传递给播放器,让播放器自行播放?
如果是点击OPEN以后没有进入自建的界面,那是因为这个界面没有SHOW。
如果是第二种情况,则是地址的传输没有完成或者播放器没有启动。
可在相应的代码处添加断点单步执行来查看