Сбой приложения при попытке использовать VideoView

#android #android-videoview

#Android #android-videoview

Вопрос:

Я только начал возиться с разработчиком Android и пытаюсь просто воспроизвести видеофайл, который есть где-то в Интернете. Мой Main.xml выглядит так:

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
    >
    <Button android:layout_height="wrap_content" android:id="@ id/button1" android:layout_width="wrap_content" android:text="@string/buttonText" android:onClick="clickHandler"></Button>
    <VideoView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@ id/MyVideoView"></VideoView>
</LinearLayout>
  

и мой Java-файл выглядит следующим образом:
пакет com.dop.videoTest;

 import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;


public class VideoTest extends Activity {
    private String path = "http://commonsware.com/misc/test2.3gp";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void clickHandler(View view)
    {
        mVideoView = (VideoView) findViewById(R.id.MyVideoView);

        if (path == "") {
            Toast.makeText(
                    VideoTest.this,
                    "Please edit VideoViewDemo Activity, and set path"
                              " variable to your media file URL/path",
                    Toast.LENGTH_LONG).show();

        } else {
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();
        }
    }
}
  

итак, когда я нажимаю свою кнопку, он просто говорит «Видео-тест приложения неожиданно остановился. Пожалуйста, попробуйте еще раз.»

есть идеи?

Комментарии:

1. Для сравнения строк используйте equals( path.equals("") ), а не path == ""

2. выполнение == работает нормально. Кроме того, это не решит проблему

Ответ №1:

Путь в вашем коде

 private String path = "http://commonsware.com/misc/test2.3gp";
  

Для этого VideoView потребуется доступ в Интернет.
Скорее всего, вы не установили разрешение на доступ в Интернет в манифесте.
Одна из причин, по которой это происходит, заключается в том, что ваше приложение пытается получить доступ к чему-либо, для чего требуется явное указание разрешения в манифесте.

Разрешение на доступ в Интернет может быть установлено как:

 < uses-permission android:name="android.permission.INTERNET" />
  

Проверьте эту ссылку:
Документация по манифесту Android

Комментарии:

1. Вы правы, добавление этой строки фактически устранило ошибку, и видео теперь воспроизводится. Почему eclipse не сообщает вам об этом? Я бы никогда не догадался, что это причина.

2. Ну, поддержка Android в eclipse осуществляется отдельным плагином, разработанным Android team из Google (насколько я знаю). Так что это их часть .. не следует винить eclipse за это. Я не уверен, насколько легко разработчикам Android сообщать вам о таких ошибках, но все же поддержка разработки Android еще не приблизилась к зрелой фазе .. но я верю, что они будут.

3. Gotcha…do вы знаете способ выполнить трассировку или echo на Java, чтобы они отображались в консоли eclipse?

4. Для этого вы можете использовать LogCat. Проверьте это аналогично