1
0
Fork 0
forked from len0rd/rockbox

Rockbox as an application: Commit current Android port progress.

General state is: Rockbox is usable (plays music, saves configuration, touchscreen works too).
Problems:
 - Playing music in the background (i.e. when switching to another app) doesn't work reliably, but I'm working on that now.
 - no cabbiev2 (only some preliminary files for it), no other default theme.
 - screen flickers sometimes if the updates are too frequent
 - no multi screen apk/package
 - strange behavior when a phone call comes in

The java files (and the eclipse project) resides in android/, which is also supposed to be the build folder.
I've put a small README in there for instructions. There are some steps needed after the make part, which are described there,
and which eclipse mostly handles. But there ought to be some script/makefile rules which do that instead in the future.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27668 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Thomas Martitz 2010-08-02 20:34:47 +00:00
parent 850efead04
commit 240923a801
53 changed files with 2103 additions and 68 deletions

View file

@ -0,0 +1,98 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2010 Thomas Martitz
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
package org.rockbox;
import java.nio.ByteBuffer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class RockboxFramebuffer extends View
{
private Bitmap btm;
private ByteBuffer native_buf;
private Handler update_handler;
private Runnable cb;
public RockboxFramebuffer(Context c)
{
super(c);
update_handler = new Handler();
cb = new Runnable() {
public void run()
{
btm.copyPixelsFromBuffer(native_buf);
invalidate();
}
};
btm = null;
}
public void onDraw(Canvas c)
{
if (btm != null)
c.drawBitmap(btm, 0.0f, 0.0f, null);
}
public void java_lcd_init(int lcd_width, int lcd_height, ByteBuffer native_fb)
{
btm = Bitmap.createBitmap(lcd_width, lcd_height, Bitmap.Config.RGB_565);
native_buf = native_fb;
}
public void java_lcd_update()
{
update_handler.post(cb);
}
private void LOG(CharSequence text)
{
Log.d("RockboxBootloader", (String) text);
}
public boolean onTouchEvent(MotionEvent me)
{
LOG("onTouchEvent");
switch (me.getAction())
{
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
touchHandler(0);
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
touchHandler(1);
break;
}
pixelHandler((int)me.getX(), (int)me.getY());
return true;
}
public native void pixelHandler(int x, int y);
public native void touchHandler(int down);
}