Как создать интерактивную карту в Android

Мне нужен раздел моего приложения, чтобы иметь интерактивную карту квадратной области, состоящей примерно из 10 зданий. Вы должны быть в состоянии нажать на здание и получить некоторую информацию о нем. Я знаю, что есть несколько способов сделать это, но я надеюсь, что кто-то с опытом в этом может дать мне несколько советов.

Вот несколько способов, которые я могу придумать для достижения этой цели.

Карты Google

Я уже внедрил Google Maps API, и он работает довольно хорошо, но не дает того эффекта, который я искал. Карты Google требуют подключения к Интернету и дают вам доступ ко всей карте. Мне нужно, чтобы он был заперт в одной области.

Веб-просмотры

Это кажется отличной альтернативой. Я уверен, что смогу придумать простую карту изображений, которая даст вам больше информации, когда вы нажмете на определенное здание. Единственная проблема заключается в том, что вам также необходимо подключение к Интернету.

OpenGL?

Я никогда особо не интересовался этим, но я слышал, что это сложно и больно реализовать. Можно было бы запустить локально, но стоит ли?

Есть ли другой способ разработки интерактивной карты? Следует иметь в виду, что я также хотел бы когда-нибудь перенести это на iOS (, если у кого-то есть опыт работы с этим )

-. 121 ---1585266-

Ошибка Android VideoView (1,16 )и показывает черный экранУ меня есть приложение с VideoView, которое воспроизводит файл mp4 из внутренней памяти (каталог файлов моих пакетов )На некоторых устройствах Samsung Epic Touch 4g (Galaxy SII )вместо видео...

У меня есть приложение с VideoView, которое воспроизводит файл mp4 из внутреннего хранилища (мои пакеты filesкаталог)

На некоторых устройствах Samsung Epic Touch 4g (Galaxy SII )вместо показа видео экран полностью черный. Все остальное в моем приложении ведет себя и реагирует нормально, поэтому устройство вообще не «зависает», оно просто показывает только черный цвет на экране вместо видео.

Чтобы запустить свое видео, я использую обратный вызов onPreparedListener, чтобы сделать вызов для запуска():

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer arg0) {
        mVideoView.start();
    }
});

и я установил воспроизведение видео с этим вызовом:

//file is the reference to my video File object. 
//I am positive that it is correct
mVideoView.setVideoPath(file.getAbsolutePath());

У меня есть такой набор onErrorListener:

mVideoView.setOnErrorListener(new OnErrorListener(){
    @Override
    public boolean onError(MediaPlayer arg0, int arg1, int arg2) {  
        Log.i(myTag, "MP ERROR: "+ arg1 + " - " + arg2);
        /* I have also tried this here, no luck this way either
        mVideoView.setVideoPath(file.getAbsolutePath());
        return true;
        */
        return false;
    }       
});

При ближайшем рассмотрении я понял, что мой onErrorListener вообще не получает обратный вызов.

Пока на экране чернота, журнал снова и снова засыпается этими сообщениями:

V/PlayerDriver(2579): HandleInformationalEvent: PVMFInfoProcessingFailure
V/PlayerDriver(2579): HandleInformationalEvent: type=16 UNHANDLED
E/MFC_DEC_APP(2579): SsbSipMfcDecExe] IOCTL_MFC_DEC_EXE failed(ret : -2001)
E/PVMFOMXVideoDecNode(2579): Ln 1652 OMX_EventError nData1 -2147479541 nData2 0

и (иногда следующие строки перемежаются со спамом из 4-х строк выше. Но в других случаях эти двое рассылаются сами по себе после нескольких итераций спама вышеприведенных 4.)

W/MediaPlayer(30537): info/warning (1, 16)
I/MediaPlayer(30537): Info (1,16)

Я не думаю, что это проблема кодирования моего видео (AVC MP4 ), потому что точно такое же видео работает на некоторых устройствах Epic Touch 4g (даже на некоторых устройствах той же версии ОС ). И я использовал точно такое же видео в прошлом на этом устройстве, эти проблемы начались, когда устройство было обновлено до версии ОС 2.3.6.

Может ли кто-нибудь пролить свет на ошибки OMX/MFC, которые я вижу? Или у кого-нибудь еще была проблема с тем, что VideoView отображал только черный экран вместо видео? Наконец, есть ли другой способ, которым я должен инициировать подготовку/воспроизведение моего видеофайла, который не может привести к этим ошибкам и черному экрану?

РЕДАКТИРОВАТЬ:Я нашел в этом файле , что предупреждение #16 есть:

/*
Notification that a processing failure occurred (not fatal error)
*/
const PVMFStatus PVMFInfoProcessingFailure = 16;

Что должно быть нефатальной ошибкой.Я полагаю, что это не сбой, поэтому это не «фатально», но что бы ни происходило, это приводит к тому, что мое видео не отображается должным образом.

РЕДАКТИРОВАТЬ 2:еще несколько логов с устройства во время запуска видео. Все они идут перед спамом вышеперечисленных:

D/PowerManagerService(2677): acquireWakeLock flags=0xa tag=KEEP_SCREEN_ON_FLAG uid=1000 pid=2677   myUID=1000 myPID=2677 myTID=23672
I/ALSAModule(2579): Initialized ALSA PLAYBACK device hifi
W/AudioFlinger(2579): write blocked for 99 msecs, 318 delayed writes, thread 0x61a00
I/libfimc(2677): bool SecFimc::create(SecFimc::FIMC_DEV, fimc_overlay_mode, unsigned int):: Fimc reserved memory =0x57da0000
E/Surface(6585): Surface::init token -2 identity 3401
E/action=%s(2677): com.android.music.musicservicecommand
D/AudioService(2677): musicservicecommand
E/MediaPlayer-JNI(6585): setDataSource: outside path in JNI is ?x@
I/WindowManager(2677):   CREATE SURFACE Surface(name=SurfaceView, identity=3401, mNativeSurface=0) IN SESSION android.view.SurfaceSession@40825e90: pid=6585 format=4 flags=0x200 / Window{40bbc478 SurfaceView paused=false}
D/MediaPlayerService(2579): getPlayerType. Ln=935
D/MediaPlayerService(2579): createPlayer. type=1
D/MediaPlayerService(2579):  create PVPlayer
V/PlayerDriver(2579): PVSuspensionState struct constructor
V/PVPlayer(2579): PVPlayer constructor
V/PVPlayer(2579): construct PlayerDriver
V/PlayerDriver(2579): constructor
V/PlayerDriver(2579): OpenCore hardware module not found
V/PlayerDriver(2579): start player thread
V/PlayerDriver(2579): startPlayerThread
V/PlayerDriver(2579): InitializeForThread
V/PlayerDriver(2579): OMX_MasterInit
V/PlayerDriver(2579): OsclScheduler::Init
V/PlayerDriver(2579): CreatePlayer
D/(2579): SISO TEST registering PVMFRecognizerPluginFactory
D/(2579): SISO TEST registering PVMFRecognizerPluginFactory success
V/PlayerDriver(2579): AddToScheduler
V/PlayerDriver(2579): PendForExec
V/PlayerDriver(2579): OsclActiveScheduler::Current
V/PlayerDriver(2579): StartScheduler
V/PVPlayer(2579): send PLAYER_SETUP
V/PlayerDriver(2579): Send player code: 2
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_SETUP status=PVMFSuccess
V/PVPlayer(2579): setVideoSurface(0x46b0d0)
V/PVPlayer(2579): setVideoSurface(0x2d8cd0)
V/PVPlayer(2579): prepareAsync
D/ViewRoot(3990): handleAppVisibility:TN_USA_U1_SPR
V/PlayerDriver(2579): Send player code: 3
V/PlayerDriver(2579): handleSetDataSource
V/PlayerDriver(2579): handleSetDataSource- scanning for extension
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_SET_DATA_SOURCE status=PVMFSuccess
V/PVPlayer(2579): run_init s=0, cancelled=0
V/PlayerDriver(2579): Send player code: 6
V/PlayerDriver(2579): release string is 2.3.6 len 5
V/PlayerDriver(2579): HandleInformationalEvent: PVMFInfoDurationAvailable
V/PlayerDriver(2579):.... with duration = 168483 ms
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_INIT status=PVMFSuccess
V/PlayerDriver(2579): dongju PlayerCommand::PLAYER_INIT enter
V/PlayerDriver(2579): File EXT is :.mp4
E/PlayerDriver(2579): PlayerDriver::it is a not Protected file
V/PlayerDriver(2579): PlayerCommand::PLAYER_INIT exit
V/PVPlayer(2579): run_set_video_surface s=0, cancelled=0
V/PlayerDriver(2579): Send player code: 4
W/PlayerDriver(2579): Using generic video MIO
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_SET_VIDEO_SURFACE status=PVMFSuccess
V/PVPlayer(2579): run_set_audio_output s=0, cancelled=0
V/PlayerDriver(2579): Send player code: 5
V/PlayerDriver(2579): Create realtime output
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_SET_AUDIO_SINK status=PVMFSuccess
V/PVPlayer(2579): run_prepare s=0, cancelled=0
V/PlayerDriver(2579): Send player code: 7
V/PlayerDriver(2579): disable natpkt - 0
I/MFC_DEC_APP(2579): [SsbSipMfcDecOpen] MFC Library Ver 1.00
I/MFC_DEC_APP(2579): [SsbSipMfcDecOpen] handle(61) 
V/PlayerDriver(2579): HandleInformationalEvent: UNKNOWN PVMFStatus
V/PlayerDriver(2579): HandleInformationalEvent: type=44 UNHANDLED
W/MediaPlayer(6585): info/warning (1, 44)
I/MediaPlayer(6585): Info (1,44)
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_PREPARE status=PVMFSuccess
V/PlayerDriver(2579): PLAYER_PREPARE complete mDownloadContextData=0x0, mDataReadyReceived=0
D/MediaPlayer(6585): getMetadata
V/PVPlayer(2579): setLooping(0)
V/PVPlayer(2579): check_for_live_streaming s=0, cancelled=0
V/PlayerDriver(2579): Send player code: 12
V/PVPlayer(2579): setLooping(0)
V/PlayerDriver(2579): Send player code: 12
E/PVPlayer(2579): isDrmfile playing 0
E/PVPlayer(2579): OPLBlocked = 0
E/MediaPlayerService(2579): MediaPlayerService::mIsAnyDrmVideoPlaying : 0
E/MediaPlayerService(2579): MediaPlayerService::mpCheckOPLBlocked : 0
V/PVPlayer(2579): start
E/AudioPolicyManager(2579): getParamFromPolicy
D/AudioPolicyManager(2579): mCurDevice is 2
V/AudioPolicyManager(2579): getDeviceForStrategy() strategy 0, device 2
V/AudioPolicyManager(2579): getNewDevice() selected device 2
I/FmRadioController(2677): Jni player_SetVolume :7 
I/FmRadioController(2677): ---Jni player_SetVolume---
V/PlayerDriver(2579): Send player code: 8
V/PlayerDriver(2579): dongju handleStart
E/PlayerDriver(2579): PlayerDriver::handleTvOut state=[1]
E/PlayerDriver(2579): PlayerDriver::it is not a DRM file.So don't suspend TVOUT
V/PlayerDriver(2579): CommandCompleted
V/PlayerDriver(2579): Completed command PLAYER_START status=PVMFSuccess

5
задан FoamyGuy 18 July 2012 в 19:39
поделиться