Opened 9 years ago

Closed 6 years ago

#12420 closed Patch - Feature (Fixed)

Android Support

Reported by: Mark Spieth Owned by: Mark Spieth
Priority: minor Milestone: unknown
Component: Ports - Android Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description (last modified by Mark Spieth)

This is the first release for android packaging of mythtv, specifically mythfrontend. It is without any plugins or features.

It does work with some quirks.

  • Gesture support had to be added to tv playback otherwise the OSD * was useless.
  • Dir support was changed.
  • opengl was fixed (sort of)
git clone git@github.com:mspieth/packaging.git
cd packaging/android
git clone git@github.com:mspieth/mythtv.git

There is a Readme.md in the android dir. If you find any missed steps or ambiguities, let me know.

Tested on my S4 (and nothing else) which is android 4.2.2 (sdk 17)

The apk is built with master as of the labelled date with a minimum of android 4.2.2 supported. http://digivation.com.au/debian/mythfrontend-20150322-2.apk . It is a debug release so no proper signature.

I'll leave it for others to backport if its even possible.

Ill set up a pull request too.

Change History (38)

comment:1 Changed 9 years ago by Mark Spieth

Summary: Android PatchesAndroid Support

comment:2 Changed 9 years ago by Mark Spieth

From Readme.md for those who download the apk.

Setting up the Options

  1. Select country/language
  2. Add DB details.
    • Note: Un check ping server otherwise it wont work. There is no ping
  3. In Setup (you can only go back with Qt painter painter but video doesnt work with Qt theme Painter)
    • select Theme first
    • set key bindings for your back key and menu key
    • Menu to Global.Menu
    • Back to TV Playback.Back
    • Finally in Appearance set painter to OpenGL
      • After this, setup wont work properly, but playing video will
      • if you want to do intensive setup work, switch back to Qt painter temporarily

Playback Usage

http://digivation.com.au/debian/mythfrontend-20150413.apk

There are click zones in the playback window. The window is divided into a 4x3 grid with the following configurable key presses.

` P | Up | Z | [ Left | Return | Return | Right A | Down | Q | ] `

  • Settings Name : LiveTVScreenPressKeyMap
  • Default: "P,Up,Z,S,Left,Return,Return,Right,A,Down,Q,F"

` P | Up | Z | S Left | Return | Return | Right A | Down | Q | F `

  • A is time stretch
  • P is pause
  • Z is skip commercial
  • Q is skip back commercial
  • S is program guide
  • F is function toggle
  • [ is volume down
  • ] is volume up

Also see the wiki page https://www.mythtv.org/wiki/MythTV_on_Android

Obsolete

Playback Usage

There are click zones in the playback window. The window is divided into a 3x3 grid with the following hard coded key presses.

P    |   Up   |   Z    |   [
Left | Return | Return | Right
A    |  Down  |   Q    |   ]
  • A is time stretch
  • P is pause
  • Z is skip commercial
  • Q is skip back commercial
  • [ is volume down
  • ] is volume up

Note: volume does not currently work but you can use the side buttons.
See tv_play.cpp regionKeyList

Obsolete

Playback Usage

http://digivation.com.au/debian/mythfrontend-20150322.apk

There are click zones in the playback window. The window is divided into a 3x3 grid with the following hard coded actions.

PAUSE         |   UP   | VOLUMEUP
LEFT          | SELECT | RIGHT
ADJUSTSTRETCH |  DOWN  | VOLUMEDOWN

Note: volume does not currently work but you can use the side buttons. This will probably change to a 4x3 grid to add commercial skip buttons

Last edited 9 years ago by Mark Spieth (previous) (diff)

comment:3 Changed 9 years ago by Mark Spieth

Description: modified (diff)

comment:4 Changed 9 years ago by Mark Spieth

Updated gesture support so that livetv is usable.

Gesture map(s) are now reconfigurable via Settings table. See wiki for details.

Added start of wiki page https://www.mythtv.org/wiki/MythTV_on_Android

Still needs playback improvements which I'll address next.

New master based apk to play with.

comment:5 Changed 8 years ago by Karl Egly

Component: MythTV - GeneralPorts - Other

comment:6 Changed 6 years ago by Mark Spieth

Owner: set to Mark Spieth
Status: newassigned

comment:7 Changed 6 years ago by Mark Spieth <mspieth@…>

In 543708742c80f2ec431b253f6eebcb05210c69b6/mythtv:

Android build updates for 30

Refs #12420

comment:8 Changed 6 years ago by Mark Spieth <mspieth@…>

In d77e890e198461e1d047064c48c89a23c117cb68/packaging:

Update android build to use gradle instead of ant

Allows builds with Android SDK tools > 25.2.5 when
project support in "android update project" was removed.
Refs #12420

comment:9 Changed 6 years ago by Mark Spieth <mspieth@…>

In 51e6def979fa78dfd391408eb96ff6bf0e92e858/packaging:

Updated Android readme with current details and dependencies.

Refs #12420

comment:10 Changed 6 years ago by Mark Spieth <mspieth@…>

In b2e27dc9838b1a49af2e0b85edb1f49773da4402/packaging:

Android: Updated jdk to 8 for gradle build support.

Refs #12420

comment:11 Changed 6 years ago by Mark Spieth <mspieth@…>

In 4e66ad9d4d7dd9fda287f74fa229e54e41f1cdcf/packaging:

Adjusted targetapk name to suit gradle.

Refs #12420

comment:12 Changed 6 years ago by Mark Spieth <mspieth@…>

comment:13 Changed 6 years ago by David Engel <david@…>

In b1a0d4846ab4580ba0e979f3ce36513e326fa8a4/packaging:

Improve package compatibility with Android TV.

Refs #12420

comment:14 Changed 6 years ago by David Engel <david@…>

In 0eb9924dab6a19a6cfb169529d8c323e14d08bca/packaging:

Use a better looking banner on Android TV.

Refs #12420

comment:15 Changed 6 years ago by Mark Spieth <mspieth@…>

In 18da6982418e85237dbaa02b59d34161c8b8f808/packaging:

Create both toolchains, add options, help

refs #12420

comment:16 Changed 6 years ago by Mark Spieth <mspieth@…>

In 870e7e1f36a0f1891c8d7c87faefb384fa1f3b2f/packaging:

Updates for android build and debugging instructions

refs #12420

comment:17 Changed 6 years ago by Mark Spieth <mspieth@…>

In cf338c9acce742cf37d6c1ef6a49669459358e23/packaging:

Update android gdb helper script

refs #12420

comment:18 Changed 6 years ago by Mark Spieth <mspieth@…>

In c9d68e7cd21e253911c006b15cbef20018fee3f8/packaging:

Android: Remove bad icu configure option

refs #12420

comment:19 Changed 6 years ago by Mark Spieth <mspieth@…>

In 23f5bbdb0658cf0412685ee867f4f994091053df/packaging:

Android: use different directory for 32 and 64 bit libs build

refs #12420

comment:20 Changed 6 years ago by Mark Spieth <mspieth@…>

In a3fdc6038e5865b6f73fc5526155c58584acf4c5/mythtv:

Defer FanartLoader? instantiate after main() runs.

This can cause the main thread and the UI thread to be different
causing UI races. This occurs in android. There should be no
qt objects created before QApplication is created.
refs #12420

comment:21 Changed 6 years ago by Mark Spieth <mspieth@…>

In 67d8e32bd68918d54c851df96968034f6b2b710a/mythtv:

Show window early for egl and android

This makes the show event triggerred by the timer to
be processed before init is complete, showing
the theme background.
refs #12420

comment:22 Changed 6 years ago by Mark Spieth <mspieth@…>

In f6e5481a1212fb025dcaa679ee662130b9290548/mythtv:

Set window and parent window surface types to OpenGL for Android

Otherwise the raster overwrites the opengl window.
refs #12420

comment:23 Changed 6 years ago by Mark Spieth <mspieth@…>

In bd170c0119aeb4d58d100fa7bb0934e7442ec03a/mythtv:

Use OPENGL_QT5 for Android

refs #12420

comment:24 Changed 6 years ago by Mark Spieth <mspieth@…>

In 310b9a3167223f4ed985910c0cd55da8ebb195c5/mythtv:

Better OpenGLES2 capabilities debug

refs #12420

comment:25 Changed 6 years ago by Mark Spieth <mspieth@…>

In bf4763c43d64ffb8d12e02ac8a37ef68adcf3a1d/mythtv:

Fix htonl et al header includes for android for qt 5.10

refs #12420

comment:26 Changed 6 years ago by Mark Spieth <mspieth@…>

In dfd02164f0cebc744bddda019652d06ce745eabf/mythtv:

Remove command line arg override for android, its done in AndroidManifest?.xml

refs #12420

comment:27 Changed 6 years ago by Mark Spieth <mspieth@…>

In 50e9809ecf1c22372c7437de14f4b0078c23488a/packaging:

Update Android QtActivity? with qt 5.10 updates

refs #12420

comment:28 Changed 6 years ago by Mark Spieth <mspieth@…>

In c668a99ccfff40a4329bcac6c394fa9b5fc5e0a1/packaging:

Support qt 5.10 in the android build scripts and better error handling

refs #12420

comment:29 Changed 6 years ago by Mark Spieth <mspieth@…>

In 12da74b2bd6e6a8e2ebe0ed99c9a8f07490a2324/packaging:

Working gdb script for android

refs #12420

comment:30 Changed 6 years ago by Mark Spieth <mspieth@…>

In 2a8e5198dba8a83fd3a20104a0280e4515abb724/packaging:

Android: Fix qt webkit build

Also catch errors in freetype build
refs #12420

comment:31 Changed 6 years ago by Mark Spieth <mspieth@…>

In a449165cb4d31b9d2d99ccf2eaf528d786330f63/packaging:

Fix up pkg-config usage by mythbuild.sh

Otherwise it tries to use pkg-config from the crosstools path

and that doesnt exist for android.

Allows freetype to be found by pkg-config
Also removes unused LIBCRYSTAX variable
refs #12420

comment:32 Changed 6 years ago by Mark Spieth <mspieth@…>

In 35f0ff0a7b233adfb5bb63eeb5e0ec83a4485654/mythtv:

Enable opengl if opengles2 detected

Fixes regression in configure for opengles
Needed for Android
refs #12420

comment:33 Changed 6 years ago by Mark Spieth <mspieth@…>

In 9c0ff55d5046a2b2f3f26699f184ecf912be2de8/packaging:

Android: Copy filters to deploy libs as deploy

androiddeployqt doesnt know about them because
they are loaded at runtime.
Enables deinterlaces in android.
refs #12420

comment:34 Changed 6 years ago by Mark Spieth <mspieth@…>

In 4faef8d19faf484bcc30c55b438c3c2bf2eefb25/packaging:

Android: Hide nav and status bar correctly

To make them reappear, swipe from top.
refs #12420

comment:35 Changed 6 years ago by Mark Spieth <mspieth@…>

In f2209a6eed0cd3c41b53671ae26eb18265cccdec/packaging:

Add pre 19 Android API support

Allows building of jellybean 4.2.2 and kitkat versions 4.4
Still requires manual removal of banner tag from AndroidManifest?
refs #12420

comment:36 Changed 6 years ago by Mark Spieth <mspieth@…>

comment:37 Changed 6 years ago by Mark Spieth

Component: Ports - OtherPorts - Android

comment:38 Changed 6 years ago by Mark Spieth

Resolution: Fixed
Status: assignedclosed

Closing original ticket. Newer ones are more relevant.

Note: See TracTickets for help on using tickets.