View Full Version : ارور هنگام تعریف Media Player قبل از oncreate
  
meh_ham
یک شنبه 24 دی 1391, 19:41 عصر
سلام
چرا وقتی آبجکت media player رو میخوام قبل از متد onceate بسازم برنامه force close میشه. اما وقتی همین رو تو oncreate تعریف میکنم درست میشه.
میخوام آبجکتهای مدیا پلیر رو قبل از oncreate تعریف کنم تا بتونم تو متد onBackPressed ازشون استفاده کنم...
ممنون.
    public MediaPlayer mp1_1 = MediaPlayer.create(MainActivity.this, R.raw.sound12);
hamid_hr
یک شنبه 24 دی 1391, 19:51 عصر
از getApplicationContext() يا getParent() هم استفاده كردين
meh_ham
یک شنبه 24 دی 1391, 20:07 عصر
ممنون. اینها رو هم تست کردم ولی بازم force close میشه...
shahin bahari
یک شنبه 24 دی 1391, 20:29 عصر
خوب هرچیزی رو خارج از تابع مقدار بدید اینجوری میشه .
بیرون از onCreat بنویسید:
MediaPlayer mp=null;
بعد توی onCreat بنویسید:
mp = MediaPlayer.create(MainActivity.this, R.raw.sound12);
تویonBackPressed  هم هرکاری خواستید بکنید موردی پیش نمیاد.
farhadfery
یک شنبه 24 دی 1391, 23:11 عصر
خوب هرچیزی رو خارج از تابع مقدار بدید اینجوری میشه .
بیرون از onCreat بنویسید:
MediaPlayer mp=null;
بعد توی onCreat بنویسید:
mp = MediaPlayer.create(MainActivity.this, R.raw.sound12);
تویonBackPressed  هم هرکاری خواستید بکنید موردی پیش نمیاد.
همینطور که جناب بهاری فرمودند مقداردهی اولیه در سازنده صورت می گیرد. اصلا یکی از کارهای سازنده همینه.
srfarzad
دوشنبه 25 دی 1391, 00: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.