SurfaceHolder.setType устарел, но требуется?

недействительным android.view.SurfaceHolder.setType (тип int)

public abstract void setType (тип int) Поскольку: уровень API 1

Этот метод устарел. это игнорируется, это значение устанавливается автоматически при необходимости.

Устанавливает тип поверхности.

http://developer.android.com/reference/android/view/SurfaceHolder.html

Он говорит, что это установлено автоматически, но без этого мое видео не воспроизводится. Что тут происходит? Есть ли что-то, что заменяет его? У меня есть время, чтобы видео правильно воспроизводилось на Android.


person bwoogie    schedule 24.02.2012    source источник
comment
как у тебя воспроизводится видео? опубликуйте код.   -  person Matt K    schedule 25.02.2012
comment
Значение устанавливается автоматически при необходимости. Это то, что говорится в документе для Android. Но если он меньше, чем соты, вы должны установить его, как показано в ответах ниже.   -  person Jimit Patel    schedule 12.04.2015
comment
Устарело. Тем не менее это будет работать.   -  person Nurul Akter Towhid    schedule 22.06.2016


Ответы (1)


Хитрость заключается в том, чтобы знать, когда он устарел, что довольно сложно определить по моему опыту. Документация всегда актуальна для последнего доступного API, но вы, вероятно, не используете это приложение с последним API, если я должен был предположить. Так что вам все равно придется использовать этот метод (обычно с PUSH_BUFFERS), чтобы заставить его работать на старых платформах.

РЕДАКТИРОВАТЬ: он устарел в Android 3.0, что теперь отражено в документах.
Таким образом, мы можем использовать его следующим образом:

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
    getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
person lyricsboy    schedule 24.02.2012
comment
О, я вижу. Да что бы сделать т.к. Я хочу, чтобы они сказали, когда. Я не знал, что документ был последним при разработке в Eclipse для 2.2. - person bwoogie; 25.02.2012
comment
Кроме того, если вы посмотрите на исходный код Android VideoView, вы увидите, что он делает следующее: getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); - person lyricsboy; 25.02.2012
comment
это заставляет меня ждать :) 4 минуты. - person bwoogie; 25.02.2012
comment
Согласно developer.android.com/guide/topics/media/camera.html, это устаревший параметр, но он необходим в версиях Android до 3.0; Пожалуйста, отразите этот факт в своем посте. Спасибо. - person Eric Chen; 12.09.2012
comment
@lyricsboy Я все еще получаю предупреждение об устаревании, даже когда помещаю этот вызов в условное выражение SDK_INT. Единственный вариант, который Eclipse дает мне, чтобы подавить устаревание всего метода, в котором я нахожусь. Нет ли способа подавить предупреждение только для этой строки? - person David Doria; 26.09.2013
comment
До Java 8 (которая не актуальна для Android) аннотации можно было использовать только в объявлениях классов, переменных, методов и т. д. Если вы хотите избежать слишком широкого применения этого подавления устаревания, вы можете извлечь сомнительный код в свой собственный метод. и пометьте этот метод @SuppressWarnings. - person lyricsboy; 27.09.2013
comment
и что нам делать, если (Build.VERSION.SDK_INT ›= Build.VERSION_CODES.HONEYCOMB) ???????????? - person Anonymous; 25.09.2014
comment
@user3051067 user3051067 задается вопросом, нужно ли нам использовать ›=, потому что API устарел на этом уровне API. - person Sudhir Singh Khanger; 25.09.2014
comment
Для 3.0 (соты) и выше вообще не нужно вызывать этот метод. Как указано в документах, он игнорируется и устанавливается автоматически. - person lyricsboy; 25.09.2014
comment
Честно говоря, это худшее предложение ИМХО, когда оно сказано устаревшим, устаревшим, независимо от того, для какого уровня SDK и API вы его используете, также четко указано, что оно будет игнорироваться для более высоких SDK, так что даже в этом случае у вас нет для проверки SDK. - person vishal dharankar; 24.09.2016