View Full Version : ارور هنگام تعریف Media Player قبل از oncreate
meh_ham
یک شنبه 24 دی 1391, 18:41 عصر
سلام
چرا وقتی آبجکت media player رو میخوام قبل از متد onceate بسازم برنامه force close میشه. اما وقتی همین رو تو oncreate تعریف میکنم درست میشه.
میخوام آبجکتهای مدیا پلیر رو قبل از oncreate تعریف کنم تا بتونم تو متد onBackPressed ازشون استفاده کنم...
ممنون.
public MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.sound12);
hamid_hr
یک شنبه 24 دی 1391, 18:51 عصر
از getApplicationContext() يا getParent() هم استفاده كردين
meh_ham
یک شنبه 24 دی 1391, 19:07 عصر
ممنون. اینها رو هم تست کردم ولی بازم force close میشه...
shahin bahari
یک شنبه 24 دی 1391, 19:29 عصر
خوب هرچیزی رو خارج از تابع مقدار بدید اینجوری میشه .
بیرون از onCreat بنویسید:
MediaPlayer mp=null;
بعد توی onCreat بنویسید:
mp = MediaPlayer.create(MainActivity.this, R.raw.sound12);
تویonBackPressed هم هرکاری خواستید بکنید موردی پیش نمیاد.
farhadfery
یک شنبه 24 دی 1391, 22:11 عصر
خوب هرچیزی رو خارج از تابع مقدار بدید اینجوری میشه .
بیرون از onCreat بنویسید:
MediaPlayer mp=null;
بعد توی onCreat بنویسید:
mp = MediaPlayer.create(MainActivity.this, R.raw.sound12);
تویonBackPressed هم هرکاری خواستید بکنید موردی پیش نمیاد.
همینطور که جناب بهاری فرمودند مقداردهی اولیه در سازنده صورت می گیرد. اصلا یکی از کارهای سازنده همینه.
srfarzad
یک شنبه 24 دی 1391, 23:00 عصر
منم این نظر رو میدم..اینم تست کنید
public class PlayerActivity extends Activity implements OnErrorListener,
OnBufferingUpdateListener, OnCompletionListener,
MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
private SurfaceView _player;
MediaPlayer mediaPlayer;
SurfaceHolder surfaceHolder;
String _uri="192.168.10.100:3995/1"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
_player = (SurfaceView) findViewById(R.id.videoSurfaceView);
surfaceHolder = _player.getHolder();
// surfaceHolder.addCallback(this);
surfaceHolder.addCallback(PlayerActivity.this);
surfaceHolder.setFixedSize(700, 650);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_P USH_BUFFERS);
mediaPlayer = new MediaPlayer();
{
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
Cursor cursor = null;
Log.d(TAG, "surfaceCreated called");
try {
_player.setVisibility(View.VISIBLE);
} catch (Exception e) {
// TODO: handle exception
}
try {
mediaPlayer.setDataSource(getApplicationContext(),
Uri.parse(_uri));
mediaPlayer.prepare();
mediaPlayer.setScreenOnWhilePlaying(true);
mediaPlayer.setDisplay(surfaceHolder);
mediaPlayer.setAudioStreamType(AudioManager.STREAM _MUSIC);
mediaPlayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// mediaPlayer.setDisplay(surfaceHolder);
}
db.close();
// cursor.close();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d(TAG, "surfaceDestroyed called");
mediaPlayer.stop();
if(mRecorder!=null)
{
mRecorder.release();
mRecorder = null;
}
}
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
}
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
return false;
}
و فایل XMl :Player
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<SurfaceView
android:id="@+id/videoSurfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</merge>
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.