EDIT: согласно моим комментариям ниже, я смог расширить свое тестирование на другие устройства Honeycomb 3.2 и ICS. Во всех случаях URL-адреса, по сути, появляются и, таким образом, позволяют мне проверять адаптивную потоковую передачу. Это, следовательно, проблема только с Sony Blueray (которая в то время была моим единственным адаптивным потоковым поддерживающим устройством). Поскольку это не проблема с ОС 3.2+, но с одним только устройством-изготовителем, это не проблема с адаптивным потоковым тестированием, и я могу снять этот запрос для поддержки.Как остановить (инкогнито) подавление URL-адреса при запуске потоков HLS в Google-TV Sony 3.2 Программы для Android
У меня проблема с блокировкой и подавлением URL в локаторе/DDMS. То, что я пытаюсь сделать, это убедиться, что моя адаптивная потоковая передача HLS действительно адаптируется. Как я планировал это сделать, это следить за логарифмом и следить за тем, чтобы сегменты были подняты. Проблема в том, что URL-адреса подавлены, поэтому я не могу посмотрим, что происходит Вот отрывок из того, что я вижу в LogCat
05-15 14:.. 05: 03,499: D/AVAPIMediaPlayer (247): AVAPIMediaPlayer построен
05-15 14: 05: 03.503: D/AVAPIMediaPlayer (247): initCheck называется
05-15 14: 05: 03.503: D/AVAPIMediaPlayer (247): SetDataSource < BLOCKED >
05-15 14: 05: 03,503 D/AVAPIMediaPlayer (247): surfaceChangedCallback : call setVideoRectangle this 0x669017 38, x 480, y 180, w 1440, h 680
05-15 14: 05: 03.507: D/AVAPIMediaPlayer (247): Создать ядро игрока для видеомагнитофона типа mime/mp2t
05-15 14: 05: 03.507 D/AVSettingsBridge (247): подготовка, ручка: c560b6c8f9, тип: 0
05-15 14: 05: 03,507 I/AVSettingsBridge (247): IAVSettingsBridgeImpl :: registerCb, размер карты: 0-> 1
05-15 14: 05: 03,511 I/LiveSession (247): OnConnect < URL-подавлено >
05-15 14: 05: 03.511: I/NuHTTPDataSource (247): подключение к URL < подавлено > @ 0
Теперь я быстро проследил их обратно в рамки хрома и режим инкогнито. Некоторые базовые источники: http://androidxref.com/source/s?defs=kFlagIncognito&project=frameworks.
81 if (!(mFlags & kFlagIncognito)) {
82 LOG_PRI(ANDROID_LOG_INFO, LOG_TAG, "connect to %s @%lld", uri, offset);
83 } else {
84 LOG_PRI(ANDROID_LOG_INFO, LOG_TAG,
85 "connect to <URL suppressed> @%lld", offset);
Я также взял ссылку на Android 3.0 «Браузер включает в себя новые функции, которые позволяют пользователям осуществлять навигацию и организовать более эффективно. Несколько вкладок заменить окно браузера и новый„инкогнито“режим позволяет анонимный просмотр».
Что я думаю, это, по-видимому, идет в режим инкогнито по умолчанию?
Теперь я не кодер, просто борюсь с кодом, который был сброшен на моих коленях, но мне стало ясно, что где-то в setDataSource (контекст контекста, Uri uri) или связанные HTTP-заголовки, вероятно, есть тег/флаг который может быть установлен для включения или выключения инкогнито. И что опытные Android программисты, вероятно, смогут быстро разобраться.
Может ли кто-нибудь помочь?
У меня есть дополнительные ссылки ниже, если это помогает.
Ссылка в коде:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent receivedIntent = this.getIntent();
receivedIntent = this.getIntent();
String title = receivedIntent.getExtras().getString("label");
String subtitle = receivedIntent.getExtras().getString("subtitle");
String description = receivedIntent.getExtras().getString("description");
String URI = receivedIntent.getExtras().getString("URI");
String imagePrefix = receivedIntent.getExtras().getString("imagePrefix");
setContentView(R.layout.video_page);
String fileName = Environment.getExternalStorageDirectory().toString() + "/CamaroPit/" + imagePrefix + ".mp4";
File file = new File(fileName);
if (!file.exists()) {
fileName = Environment.getExternalStorageDirectory().toString() + "/CamaroPit/alschevrolet.mp4";
}
Log.d("GTV", "Video to play: " + fileName);
TextView textTitle = (TextView) findViewById(R.id.video_page_title);
textTitle.setText(title);
TextView textSubtitle = (TextView) findViewById(R.id.video_page_subtitle);
if (subtitle.equals("subtitle")) {
subtitle = "Check out \""+ title + "\" and really get a feel for your Camaro.";
}
textSubtitle.setText(subtitle);
TextView textDescription = (TextView) findViewById(R.id.video_page_description);
textDescription.setText(description);
this.getWindow().setFormat(PixelFormat.TRANSPARENT);
final VideoView vView = (VideoView) findViewById(R.id.page_view);
vView.setMediaController(new MediaController(this));
vView.setVideoURI(Uri.parse(URI));
vView.requestFocus();
}
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
final VideoView vView = (VideoView) GTVHomeScreenSetup.this.homeScreen.findViewById(R.id.gtv_video_view);
MediaController mC = new MediaController(GTVHomeScreenSetup.this.homeScreen);
vView.setMediaController(mC);
mC.setAnchorView(vView);
VideoData clickedVideo = currentVideoList.get(item.position);
vView.setVideoURI(Uri.parse(homeScreen.getVideoURI(clickedVideo, cPath)));
vView.start();
item.requestFocus();
for (ImageItemView item : GTVHomeScreenSetup.this.imageItems) {
item.unSelect();
}
item.select();
Дополнительные ссылки из рамок:
PS: это не позволит мне размещать гиперссылки в виде гиперссылок.
// HTTPBase.h (http://androidxref.com/source/xref/frameworks/base/media/libstagefright/include/HTTPBase.h)
28 struct HTTPBase : public DataSource {
29 enum Flags {
30 // Don't log any URLs.
31 kFlagIncognito = 1
32 };
// HTTPLiveSource.h (HTTP : //androidxref.com/source/xref/frameworks/base/media/libmediaplayerservice/nuplayer/HTTPLiveSource.h)
struct NuPlayer::HTTPLiveSource : public NuPlayer::Source {
30 HTTPLiveSource(
31 const char *url,
32 const KeyedVector<String8, String8> *headers,
33 bool uidValid = false,
34 uid_t uid = 0);
35
36 virtual void start();
37
38 virtual status_t feedMoreTSData();
39
40 virtual sp<MetaData> getFormat(bool audio);
41 virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit);
42
43 virtual status_t getDuration(int64_t *durationUs);
44 virtual status_t seekTo(int64_t seekTimeUs);
45 virtual bool isSeekable();
46
47 protected:
48 virtual ~HTTPLiveSource();
51 enum Flags {
52 // Don't log any URLs.
53 kFlagIncognito = 1,
54 };
55
56 AString mURL;
57 KeyedVector<String8, String8> mExtraHeaders;
58 bool mUIDValid;
59 uid_t mUID;
60 uint32_t mFlags;
//HTTPLiveSession.h (http://androidxref.com/source/xref/ рамки/база/медиа/libstagefright/include/LiveSession.h # 36)
AwesomePlayer 140 INCOGNITO = 0x8000,
PreviewPlayerBase.h 132 INCOGNITO = 32768,
//PreviewPlayerBase.cpp (http://androidxref.com/source/xref/frameworks/media/ libvideoeditor/lvpp/PreviewPlayerBase.cpp)
247 status_t PreviewPlayerBase::setDataSource_l(
248 const char *uri, const KeyedVector<String8, String8> *headers) {
249 reset_l();
250
251 mUri = uri;
252
253 if (headers) {
254 mUriHeaders = *headers;
255
256 ssize_t index = mUriHeaders.indexOfKey(String8("x-hide-urls-from-log"));
257 if (index >= 0) {
258 // Browser is in "incognito" mode, suppress logging URLs.
259
260 // This isn't something that should be passed to the server.
261 mUriHeaders.removeItemsAt(index);
262
263 mFlags |= INCOGNITO;
264 }
265 }
266
267 if (!(mFlags & INCOGNITO)) {
268 LOGI("setDataSource_l('%s')", mUri.string());
269 } else {
270 LOGI("setDataSource_l(URL suppressed)");
271 }
272
273 // The actual work will be done during preparation in the call to
274 // ::finishSetDataSource_l to avoid blocking the calling thread in
275 // setDataSource for any significant time.
276
277 return OK;
278 }
279
30 struct ChromiumHTTPDataSource : public HTTPBase {
31 ChromiumHTTPDataSource(uint32_t flags = 0);
32
33 virtual status_t connect(
34 const char *uri,
35 const KeyedVector<String8, String8> *headers = NULL,
36 off64_t offset = 0);
37
38 virtual void disconnect();
39
40 virtual status_t initCheck() const;
41
42 virtual ssize_t readAt(off64_t offset, void *data, size_t size);
43 virtual status_t getSize(off64_t *size);
44 virtual uint32_t flags();
Hi Les, читал ваш учебник по мультимедиа для Android. Качественный товар. И спасибо за ссылку M0n0wall. Предположительно, я могу использовать формирователь трафика, чтобы помочь установить пропускную способность для проверки адаптивного переключателя? Моя проблема намного более простая. Я не вижу переключатель, потому что URL-адреса подавляются на выходе Logcat/DDMS. Он входит в инкогнито по умолчанию, и я не знаю, какие флаги, параметры, параметры могут быть установлены и где, чтобы остановить его от использования инкогнито. Для справки это не происходит, когда я тестирую на своих устройствах Honeycomb (но они не поддерживают HLS). – MikeInDetroit
Если вы пришлете мне электронное письмо или, хотя G +, я поделюсь дополнительными подсказками, но я не уверен, что хочу сделать их публичными в это время. –
Вы можете просто посмотреть журналы доступа http на сервере, чтобы увидеть коммутатор. Я понятия не имею, почему он по умолчанию инкогнито с HLS, но это похоже на ошибку в Android или документах. – vipw