如何在启动另外一个Activity?
我有1个MainActivity,1个SurfaceView,1个 Player类继承activity。
请问要如何在sufaceView里启动并且执行该继承了activity的Player类呢?
我的主要 MainActivity 代码:
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new MySurfaceView(this)); }
dm = getApplicationContext().getApplicationContext().getResources().getDisplayMetrics();
mScreenWidth = dm.widthPixels;
mScreenHeight = dm.heightPixels;
Log.e("Sreen", String.format("%d * %d", mScreenWidth, mScreenHeight));
mNetworkService = ((AppMain)getApplication()).mNetworkService;
if(mNetworkService != null)
{
mNetworkService.mPlayer = PlayerView.this;
}
Bundle bundle = getIntent().getExtras();
mStringInfo = bundle.getString(PlayerView.TAG);
int width = bundle.getInt(PlayerView.BUNDDLE_WIDTH);
int height = bundle.getInt(PlayerView.BUNDDLE_HEIGHT);
mUserID = bundle.getInt(PlayerView.BUNDDLE_USER);
//mInfoTextView = (TextView)findViewById(R.id.player_info);
//mInfoTextView.setText(mStringInfo);
RelativeLayout parent = (RelativeLayout)findViewById(R.id.main_layout);
RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
mAudioRender = new AudioRender();
mVideoRender = new VideoRender(getApplication().getApplicationContext());
parent.addView(mVideoRender, layoutParam);
addUserIn(mUserID, width, height);
}
public void addUserIn(int userID, int videoWidth, int videoHeight)
{
//setUserOut();
mVideoRender.start(videoWidth, videoHeight, mScreenWidth, mScreenHeight);
mAudioRender.start();
}
public void setUserOut()
{
if(mUserID > 0)
{
mUserID = 0;
mVideoRender.stop();
mAudioRender.stop();
}
}
public void release()
{
mNetworkService.mPlayer = null;
setUserOut();
this.finish();
}
public void addAudioData(byte[] data, int offset, int len)
{
if(mUserID <= 0) return;
mAudioRender.addAudioData(data, offset, len);
}
public void addVideoData(byte[]data, int offset, int length, int frameID, int totalPacket, int dataOffset)
{
if(mUserID <= 0) return;
mVideoRender.addVideoData(data, offset, length, frameID, totalPacket, dataOffset);
}
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
mNetworkService.sendStopMediaCmd(mUserID);
release();
return true;
}
return super.onKeyDown(keyCode, event) ;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_FULL_SCREEN, 0, "全屏观看");
menu.add(0, MENU_ORIGINAL_SCREEN, 1, "原始大小");
menu.add(0, MENU_EXIT, 2, "关闭");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case MENU_FULL_SCREEN:
{
if(mVideoRender != null)
{
mVideoRender.fullScreen(true);
}
break;
}
case MENU_ORIGINAL_SCREEN:
{
if(mVideoRender != null)
{
mVideoRender.fullScreen(false);
}
break;
}
case MENU_EXIT:
{
mNetworkService.sendStopMediaCmd(mUserID);
release();
return true;
}
default: break;
}
return super.onOptionsItemSelected(item);
}
}