5
import java.io.BufferedReader;

public class Main extends Activity implements SurfaceHolder.Callback,
        MediaPlayer.OnCompletionListener, View.OnClickListener, OnInitListener {

    String SrcPath = "";
    MediaPlayer mp;
    SurfaceView mSurfaceView;
    private SurfaceHolder holderrrr;
    Boolean play = false;
    String t_alarm1 = "alarm.xml", t_alarm2 = "alarm2.xml", text;

    // TextToSpeach
    private TextToSpeech mText2Speech;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        addListenerOnButton();
        mText2Speech = new TextToSpeech(Main.this, Main.this);

    }

    // menü
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

        case R.id.action_settings: {
            Intent myIntent = new Intent(this, menu.class);
            Main.this.startActivity(myIntent);
            return true;
        }

        }

        return true;
    }

    // kilépésfigyelő

    private static final long DOUBLE_PRESS_INTERVAL = 2000000000;// 2 másodperc
    private long lastPressTime;

    @Override
    public void onBackPressed() {
        Toast.makeText(Main.this, getString(R.string.kilepes_dupla),
                Toast.LENGTH_SHORT).show();
        long pressTime = System.nanoTime();
        if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
            // this is a double click event
            System.exit(0);

        }
        lastPressTime = pressTime;

    }

    public void onInit(int status) {

        if (status == TextToSpeech.SUCCESS) {
            mText2Speech.setLanguage(Locale.getDefault()); // alaértelmezett
                                                            // nyelv a TtS-hez
        }

    }

    private void addListenerOnButton() {
        final Button button5 = (Button) findViewById(R.id.button5);


                    button5.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                if (play) {
                    try{
                        mp.stop();
                        mp.release();
                        mp = null;
                    }catch(Exception e){

                    }

                    button5.setText("Start");
                    play = false;

                } else {
                    try {
                        mp = new MediaPlayer();
                        mSurfaceView = (SurfaceView) findViewById(R.id.surface);
                        holderrrr = mSurfaceView.getHolder();
                        play = true;
                        button5.setText("Stop");
                        surfaceCreated(holderrrr);
                    } 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();
                    }
                }

            }
        });

    }// addlistener vége


    public void surfaceCreated(SurfaceHolder holder) {

        mp.setDisplay(holder);

        holder = mSurfaceView.getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        try {
            mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {

                    mp.stop();
                    mp.release();
                    Toast.makeText(Main.this,
                            "A videó lejátszás befejeződött!",
                            Toast.LENGTH_SHORT).show();
                    // button5.setText("Start");
                    //play = false;


                }
            });
            mp.setDataSource(SrcPath);
            mp.prepare();

        } 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();
        }

        // Get the dimensions of the video
        // int videoWidth = mp.getVideoWidth();
        // int videoHeight = mp.getVideoHeight();

        // Get the width of the screen
        // int screenWidth = getWindowManager().getDefaultDisplay().getWidth();

        // Get the SurfaceView layout parameters
        android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();

        // Set the width of the SurfaceView to the width of the screen
        // lp.width = screenWidth;
        lp.width = 420;

        // Set the height of the SurfaceView to match the aspect ratio of the
        // video
        // be sure to cast these as floats otherwise the calculation will likely
        // be 0
        // lp.height = (int) (((float) videoHeight / (float) videoWidth) *
        // (float) screenWidth);
        lp.height = 390;

        // Commit the layout parameters
        mSurfaceView.setLayoutParams(lp);

        // Start video
        mp.start();
    }


            }



        }

it works fine on the 4.1.2 android on galaxy s3 but it gives me the error message which is in the title. and it doesn't show the first 3 sec video... please give me some advice or som solution with this because i have no idea how to get rid of this kind of error

bazzs
  • 147
  • 3
  • 10

1 Answers1

0

In simple terms this error means you are asking your Android system to do too much work on the main thread of this particular application. There are some good general answers on this error, one good example being:

https://stackoverflow.com/a/21126690/334402

For your specific example, you may be simply asking it to do too much video related work, which is very processor hungry, on the main thread. It would be worth looking at your 'prepare' method for example and if you are using a streamed source, consider using prepareAsynch - see below from the Android documentation:

public void prepareAsync ()

Added in API level 1 Prepares the player for playback, asynchronously. After setting the datasource and the display surface, you need to either call prepare() or prepareAsync(). For streams, you should call prepareAsync(), which returns immediately, rather than blocking until enough data has been buffered.

One reason why you may be seeing problems on the Nexus 7 and not on the Galaxy 3 is that the Nexus has a significantly bigger screen and your video source may offer different video encodings for different sized devices - the larger ones quite likely requiring more processing to decode and render.

Community
  • 1
  • 1
Mick
  • 24,231
  • 1
  • 54
  • 120