Forum switched to read-only as of 2020/06/01


Latest product reviews
ARCHOS 50 Diamond
ARCHOS GamePad2
ARCHOS
Smartphones
ARCHOS
TV Connect
ARCHOS 101 XS

A A A
Avatar

Please consider registering
Guest

Search

— Forum Scope —






— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

Register Lost password?

ClockworkMod (CWM) Recovery easy install for RK3066 and RK3188 -- TWRP/CWM Flash-Tool and root for RK3288

 Please donate to support OMA and CrewRKTablets firmware work, thank you !

sp_Feed sp_TopicIcon
MorkaModJB v1.00 all model G2 and G3
Avatar
globula_neagra
Birmingham

Moderator

Firmware Guru
Forum Posts: 2424
Member Since:
2012/01/05
sp_UserOfflineSmall Offline

Thanks Received: 264
16
2012/11/16 - 16:27
sp_Permalink sp_Print

the
3Q RC0710B is a russian version of the arnova 7g2
Here is a link for the firmware Morka, maybe it helps you :)
They have almost the same devices as arnova/archos but they release far more updates :)
http://www.3-q.ru/files/fw/3Q_RC0710B_24082012_V1.0.5_fix.rar

Avatar
Darragh Cooney
New Member
Forum Posts: 5
Member Since:
2012/07/14
sp_UserOfflineSmall Offline
17
2012/11/16 - 17:05
sp_Permalink sp_Print

globula_neagra said
the
3Q RC0710B is a russian version of the arnova 7g2
Here is a link for the firmware Morka, maybe it helps you :)
They have almost the same devices as arnova/archos but they release far more updates :)
http://www.3-q.ru/files/fw/3Q_RC0710B_24082012_V1.0.5_fix.rar

How do I properly flash this on Arnova 7G2?

Avatar
admin

admin
Forum Posts: 5878
Member Since:
2010/09/11
sp_UserOfflineSmall Offline

Thanks Received: 3170
18
2012/11/16 - 17:10
sp_Permalink sp_Print

The included 3Q_RC0710B_24082012_V1.0.5_fix.img file seems to be a regular firmware image, so just flash the .img file with Rockchip Batch tool that is included in the archive or from our Rockchip flasher page.

If you like our web site, applications and firmwares, feel free to support our site. Donations are used to pay the bills for our server hosting costs, development tools and purchase new tablets to support.

Avatar
Morka
Lille

Firmware Guru
Forum Posts: 203
Member Since:
2012/01/06
sp_UserOfflineSmall Offline

Thanks Received: 75
19
2012/11/16 - 21:25
sp_Permalink sp_Print

@Agation.52

Here is the code BatteryService in service.jar for JellyBean

package com.android.server;

import android.app.ActivityManagerNative;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Binder;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UEventObserver;
import android.os.UEventObserver.UEvent;
import android.provider.Settings.Secure;
import android.util.EventLog;
import android.util.Slog;
import com.android.internal.app.IBatteryStats;
import com.android.server.am.BatteryStatsService;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

class BatteryService extends Binder
{
private static final int BATTERY_PLUGGED_NONE = 0;
static final int BATTERY_SCALE = 100;
private static final String BATTERY_STATS_SERVICE_NAME = "batteryinfo";
private static final String[] DUMPSYS_ARGS = { "--checkin", "-u" };
private static final String DUMPSYS_DATA_PATH = "/data/system/";
private static final int DUMP_MAX_LENGTH = 24576;
private static final boolean LOCAL_LOGV;
private static final String TAG = BatteryService.class.getSimpleName();
private static long mCount = 0L;
private boolean mAcOnline;
private int mBatteryHealth;
private int mBatteryLevel;
private boolean mBatteryLevelCritical;
private boolean mBatteryPresent;
private final IBatteryStats mBatteryStats;
private int mBatteryStatus;
private String mBatteryTechnology;
private int mBatteryTemperature;
private int mBatteryVoltage;
private final Context mContext;
private int mCriticalBatteryLevel;
private int mDischargeStartLevel;
private long mDischargeStartTime;
private int mInvalidCharger;
private UEventObserver mInvalidChargerObserver = new UEventObserver()
{
public void onUEvent(UEventObserver.UEvent paramAnonymousUEvent)
{
if ("1".equals(paramAnonymousUEvent.get("SWITCH_STATE")));
for (int i = 1; ; i = 0)
{
if (BatteryService.this.mInvalidCharger != i)
{
BatteryService.access$102(BatteryService.this, i);
BatteryService.this.update();
}
return;
}
}
};
private int mLastBatteryHealth;
private int mLastBatteryLevel;
private boolean mLastBatteryLevelCritical;
private boolean mLastBatteryPresent;
private int mLastBatteryStatus;
private int mLastBatteryTemperature;
private int mLastBatteryVoltage;
private int mLastInvalidCharger;
private int mLastPlugType = -1;
private Led mLed;
private int mLowBatteryCloseWarningLevel;
private int mLowBatteryWarningLevel;
private int mPlugType;
private UEventObserver mPowerSupplyObserver = new UEventObserver()
{
public void onUEvent(UEventObserver.UEvent paramAnonymousUEvent)
{
BatteryService.this.update();
}
};
private boolean mSentLowBatteryBroadcast = false;
private boolean mUsbOnline;

public BatteryService(Context paramContext, LightsService paramLightsService)
{
this.mContext = paramContext;
this.mLed = new Led(paramContext, paramLightsService);
this.mBatteryStats = BatteryStatsService.getService();
this.mCriticalBatteryLevel = this.mContext.getResources().getInteger(17694739);
this.mLowBatteryWarningLevel = this.mContext.getResources().getInteger(17694740);
this.mLowBatteryCloseWarningLevel = this.mContext.getResources().getInteger(17694741);
this.mPowerSupplyObserver.startObserving("SUBSYSTEM=power_supply");
if (new File("/sys/devices/virtual/switch/invalid_charger/state").exists())
this.mInvalidChargerObserver.startObserving("DEVPATH=/devices/virtual/switch/invalid_charger");
update();
}

private final int getIcon(int paramInt)
{
int i = 17302791;
if (this.mBatteryStatus == 2);
while (true)
{
return i;
if (this.mBatteryStatus == 3)
i = 17302777;
else if ((this.mBatteryStatus == 4) || (this.mBatteryStatus == 5))
{
if ((!isPowered()) || (this.mBatteryLevel < 100))
i = 17302777;
}
else
i = 17302805;
}
}

// ERROR //
private final void logBatteryStats()
{
// Byte code:
// 0: ldc 13
// 2: invokestatic 195 android/os/ServiceManager:getService (Ljava/lang/String;)Landroid/os/IBinder;
// 5: astore_1
// 6: aload_1
// 7: ifnonnull +4 -> 11
// 10: return
// 11: aload_0
// 12: getfield 103 com/android/server/BatteryService:mContext Landroid/content/Context;
// 15: ldc 197
// 17: invokevirtual 201 android/content/Context:getSystemService (Ljava/lang/String;)Ljava/lang/Object;
// 20: checkcast 203 android/os/DropBoxManager
// 23: astore_2
// 24: aload_2
// 25: ifnull -15 -> 10
// 28: aload_2
// 29: ldc 205
// 31: invokevirtual 209 android/os/DropBoxManager:isTagEnabled (Ljava/lang/String;)Z
// 34: ifeq -24 -> 10
// 37: aconst_null
// 38: astore_3
// 39: aconst_null
// 40: astore 4
// 42: new 149 java/io/File
// 45: dup
// 46: ldc 211
// 48: invokespecial 153 java/io/File:<init> (Ljava/lang/String;)V
// 51: astore 5
// 53: new 213 java/io/FileOutputStream
// 56: dup
// 57: aload 5
// 59: invokespecial 216 java/io/FileOutputStream:<init> (Ljava/io/File;)V
// 62: astore 6
// 64: aload_1
// 65: aload 6
// 67: invokevirtual 220 java/io/FileOutputStream:getFD ()Ljava/io/FileDescriptor;
// 70: getstatic 79 com/android/server/BatteryService:DUMPSYS_ARGS [Ljava/lang/String;
// 73: invokeinterface 226 3 0
// 78: aload 6
// 80: invokestatic 232 android/os/FileUtils:sync (Ljava/io/FileOutputStream;)Z
// 83: pop
// 84: aload_2
// 85: ldc 205
// 87: aload 5
// 89: iconst_2
// 90: invokevirtual 236 android/os/DropBoxManager:addFile (Ljava/lang/String;Ljava/io/File;I)V
// 93: aload 6
// 95: ifnull +8 -> 103
// 98: aload 6
// 100: invokevirtual 239 java/io/FileOutputStream:close ()V
// 103: aload 5
// 105: ifnull +353 -> 458
// 108: aload 5
// 110: invokevirtual 242 java/io/File:delete ()Z
// 113: ifne +345 -> 458
// 116: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 119: new 244 java/lang/StringBuilder
// 122: dup
// 123: invokespecial 245 java/lang/StringBuilder:<init> ()V
// 126: ldc 247
// 128: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 131: aload 5
// 133: invokevirtual 254 java/io/File:getAbsolutePath ()Ljava/lang/String;
// 136: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 139: invokevirtual 257 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 142: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 145: pop
// 146: goto -136 -> 10
// 149: astore 23
// 151: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 154: ldc_w 265
// 157: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 160: pop
// 161: goto -58 -> 103
// 164: astore 7
// 166: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 169: ldc_w 267
// 172: aload 7
// 174: invokestatic 270 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
// 177: pop
// 178: aload 4
// 180: ifnull +8 -> 188
// 183: aload 4
// 185: invokevirtual 239 java/io/FileOutputStream:close ()V
// 188: aload_3
// 189: ifnull -179 -> 10
// 192: aload_3
// 193: invokevirtual 242 java/io/File:delete ()Z
// 196: ifne -186 -> 10
// 199: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 202: new 244 java/lang/StringBuilder
// 205: dup
// 206: invokespecial 245 java/lang/StringBuilder:<init> ()V
// 209: ldc 247
// 211: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 214: aload_3
// 215: invokevirtual 254 java/io/File:getAbsolutePath ()Ljava/lang/String;
// 218: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 221: invokevirtual 257 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 224: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 227: pop
// 228: goto -218 -> 10
// 231: astore 14
// 233: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 236: ldc_w 265
// 239: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 242: pop
// 243: goto -55 -> 188
// 246: astore 16
// 248: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 251: ldc_w 272
// 254: aload 16
// 256: invokestatic 270 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
// 259: pop
// 260: aload 4
// 262: ifnull +8 -> 270
// 265: aload 4
// 267: invokevirtual 239 java/io/FileOutputStream:close ()V
// 270: aload_3
// 271: ifnull -261 -> 10
// 274: aload_3
// 275: invokevirtual 242 java/io/File:delete ()Z
// 278: ifne -268 -> 10
// 281: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 284: new 244 java/lang/StringBuilder
// 287: dup
// 288: invokespecial 245 java/lang/StringBuilder:<init> ()V
// 291: ldc 247
// 293: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 296: aload_3
// 297: invokevirtual 254 java/io/File:getAbsolutePath ()Ljava/lang/String;
// 300: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 303: invokevirtual 257 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 306: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 309: pop
// 310: goto -300 -> 10
// 313: astore 19
// 315: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 318: ldc_w 265
// 321: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 324: pop
// 325: goto -55 -> 270
// 328: astore 8
// 330: aload 4
// 332: ifnull +8 -> 340
// 335: aload 4
// 337: invokevirtual 239 java/io/FileOutputStream:close ()V
// 340: aload_3
// 341: ifnull +39 -> 380
// 344: aload_3
// 345: invokevirtual 242 java/io/File:delete ()Z
// 348: ifne +32 -> 380
// 351: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 354: new 244 java/lang/StringBuilder
// 357: dup
// 358: invokespecial 245 java/lang/StringBuilder:<init> ()V
// 361: ldc 247
// 363: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 366: aload_3
// 367: invokevirtual 254 java/io/File:getAbsolutePath ()Ljava/lang/String;
// 370: invokevirtual 251 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 373: invokevirtual 257 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 376: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 379: pop
// 380: aload 8
// 382: athrow
// 383: astore 10
// 385: getstatic 71 com/android/server/BatteryService:TAG Ljava/lang/String;
// 388: ldc_w 265
// 391: invokestatic 263 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
// 394: pop
// 395: goto -55 -> 340
// 398: astore 8
// 400: aload 5
// 402: astore_3
// 403: goto -73 -> 330
// 406: astore 8
// 408: aload 6
// 410: astore 4
// 412: aload 5
// 414: astore_3
// 415: goto -85 -> 330
// 418: astore 16
// 420: aload 5
// 422: astore_3
// 423: goto -175 -> 248
// 426: astore 16
// 428: aload 6
// 430: astore 4
// 432: aload 5
// 434: astore_3
// 435: goto -187 -> 248
// 438: astore 7
// 440: aload 5
// 442: astore_3
// 443: goto -277 -> 166
// 446: astore 7
// 448: aload 6
// 450: astore 4
// 452: aload 5
// 454: astore_3
// 455: goto -289 -> 166
// 458: goto -448 -> 10
//
// Exception table:
// from to target type
// 98 103 149 java/io/IOException
// 42 53 164 android/os/RemoteException
// 183 188 231 java/io/IOException
// 42 53 246 java/io/IOException
// 265 270 313 java/io/IOException
// 42 53 328 finally
// 166 178 328 finally
// 248 260 328 finally
// 335 340 383 java/io/IOException
// 53 64 398 finally
// 64 93 406 finally
// 53 64 418 java/io/IOException
// 64 93 426 java/io/IOException
// 53 64 438 android/os/RemoteException
// 64 93 446 android/os/RemoteException
}

private final void logOutlier(long paramLong)
{
ContentResolver localContentResolver = this.mContext.getContentResolver();
String str1 = Settings.Secure.getString(localContentResolver, "battery_discharge_threshold");
String str2 = Settings.Secure.getString(localContentResolver, "battery_discharge_duration_threshold");
if ((str1 != null) && (str2 != null));
try
{
long l = Long.parseLong(str2);
int i = Integer.parseInt(str1);
if ((paramLong <= l) && (this.mDischargeStartLevel - this.mBatteryLevel >= i))
logBatteryStats();
return;
}
catch (NumberFormatException localNumberFormatException)
{
while (true)
Slog.e(TAG, "Invalid DischargeThresholds GService string: " + str2 + " or " + str1);
}
}

private native void native_update();

private void processValues()
{
int i = 0;
long l = 0L;
boolean bool1;
if (this.mBatteryLevel <= this.mCriticalBatteryLevel)
bool1 = true;
while (true)
{
this.mBatteryLevelCritical = bool1;
if (this.mAcOnline)
this.mPlugType = 1;
try
{
label36: writeBatteryCapacity(this.mBatteryLevel);
mCount = 1L;
}
catch (IOException localIOException)
{
try
{
label47: this.mBatteryStats.setBatteryState(this.mBatteryStatus, this.mBatteryHealth, this.mPlugType, this.mBatteryLevel, this.mBatteryTemperature, this.mBatteryVoltage);
label80: shutdownIfNoPower();
shutdownIfOverTemp();
label275: int j;
label357: boolean bool2;
label517: boolean bool3;
label527: boolean bool4;
label570: Intent localIntent;
if ((this.mBatteryStatus != this.mLastBatteryStatus) || (this.mBatteryHealth != this.mLastBatteryHealth) || (this.mBatteryPresent != this.mLastBatteryPresent) || (this.mBatteryLevel != this.mLastBatteryLevel) || (this.mPlugType != this.mLastPlugType) || (this.mBatteryVoltage != this.mLastBatteryVoltage) || (this.mBatteryTemperature != this.mLastBatteryTemperature) || (this.mInvalidCharger != this.mLastInvalidCharger))
{
if (this.mPlugType != this.mLastPlugType)
{
if (this.mLastPlugType != 0)
break label888;
if ((this.mDischargeStartTime != 0L) && (this.mDischargeStartLevel != this.mBatteryLevel))
{
l = SystemClock.elapsedRealtime() - this.mDischargeStartTime;
i = 1;
Object[] arrayOfObject3 = new Object[3];
arrayOfObject3[0] = Long.valueOf(l);
arrayOfObject3[1] = Integer.valueOf(this.mDischargeStartLevel);
arrayOfObject3[2] = Integer.valueOf(this.mBatteryLevel);
EventLog.writeEvent(2730, arrayOfObject3);
this.mDischargeStartTime = 0L;
}
}
if ((this.mBatteryStatus != this.mLastBatteryStatus) || (this.mBatteryHealth != this.mLastBatteryHealth) || (this.mBatteryPresent != this.mLastBatteryPresent) || (this.mPlugType != this.mLastPlugType))
{
Object[] arrayOfObject1 = new Object[5];
arrayOfObject1[0] = Integer.valueOf(this.mBatteryStatus);
arrayOfObject1[1] = Integer.valueOf(this.mBatteryHealth);
if (!this.mBatteryPresent)
break label913;
j = 1;
arrayOfObject1[2] = Integer.valueOf(j);
arrayOfObject1[3] = Integer.valueOf(this.mPlugType);
arrayOfObject1[4] = this.mBatteryTechnology;
EventLog.writeEvent(2723, arrayOfObject1);
}
if ((this.mBatteryLevel != this.mLastBatteryLevel) || (this.mBatteryVoltage != this.mLastBatteryVoltage) || (this.mBatteryTemperature != this.mLastBatteryTemperature))
{
Object[] arrayOfObject2 = new Object[3];
arrayOfObject2[0] = Integer.valueOf(this.mBatteryLevel);
arrayOfObject2[1] = Integer.valueOf(this.mBatteryVoltage);
arrayOfObject2[2] = Integer.valueOf(this.mBatteryTemperature);
EventLog.writeEvent(2722, arrayOfObject2);
}
if ((this.mBatteryLevelCritical) && (!this.mLastBatteryLevelCritical) && (this.mPlugType == 0))
{
l = SystemClock.elapsedRealtime() - this.mDischargeStartTime;
i = 1;
}
if (this.mPlugType == 0)
break label919;
bool2 = true;
if (this.mLastPlugType == 0)
break label925;
bool3 = true;
if ((bool2) || (this.mBatteryStatus == 1) || (this.mBatteryLevel > this.mLowBatteryWarningLevel) || ((!bool3) && (this.mLastBatteryLevel <= this.mLowBatteryWarningLevel)))
break label931;
bool4 = true;
Slog.d(TAG, "sendBatteryLow:" + bool4 + " plugged:" + bool2 + " status:" + this.mBatteryStatus + " mBatteryLevel:" + this.mBatteryLevel + " mLowBatteryWarningLevel:" + this.mLowBatteryWarningLevel + " oldPlugged: " + bool3 + " mLastBatteryLevel: " + this.mLastBatteryLevel);
sendIntent();
localIntent = new Intent();
localIntent.setFlags(268435456);
if ((this.mPlugType == 0) || (this.mLastPlugType != 0))
break label937;
localIntent.setAction("android.intent.action.ACTION_POWER_CONNECTED");
this.mContext.sendBroadcast(localIntent);
label726: if (!bool4)
break label972;
this.mSentLowBatteryBroadcast = true;
localIntent.setAction("android.intent.action.BATTERY_LOW");
this.mContext.sendBroadcast(localIntent);
}
while (true)
{
this.mLed.updateLightsLocked();
if ((i != 0) && (l != 0L))
logOutlier(l);
this.mLastBatteryStatus = this.mBatteryStatus;
this.mLastBatteryHealth = this.mBatteryHealth;
this.mLastBatteryPresent = this.mBatteryPresent;
this.mLastBatteryLevel = this.mBatteryLevel;
this.mLastPlugType = this.mPlugType;
this.mLastBatteryVoltage = this.mBatteryVoltage;
this.mLastBatteryTemperature = this.mBatteryTemperature;
this.mLastBatteryLevelCritical = this.mBatteryLevelCritical;
this.mLastInvalidCharger = this.mInvalidCharger;
return;
bool1 = false;
break;
if (this.mUsbOnline)
{
this.mPlugType = 2;
break label36;
}
this.mPlugType = 0;
break label36;
localIOException = localIOException;
localIOException.printStackTrace();
break label47;
label888: if (this.mPlugType != 0)
break label275;
this.mDischargeStartTime = SystemClock.elapsedRealtime();
this.mDischargeStartLevel = this.mBatteryLevel;
break label275;
label913: j = 0;
break label357;
label919: bool2 = false;
break label517;
label925: bool3 = false;
break label527;
label931: bool4 = false;
break label570;
label937: if ((this.mPlugType != 0) || (this.mLastPlugType == 0))
break label726;
localIntent.setAction("android.intent.action.ACTION_POWER_DISCONNECTED");
this.mContext.sendBroadcast(localIntent);
break label726;
label972: if ((this.mSentLowBatteryBroadcast) && (this.mLastBatteryLevel >= this.mLowBatteryCloseWarningLevel))
{
this.mSentLowBatteryBroadcast = false;
localIntent.setAction("android.intent.action.BATTERY_OKAY");
this.mContext.sendBroadcast(localIntent);
}
}
}
catch (RemoteException localRemoteException)
{
break label80;
}
}
}
}

private final void sendIntent()
{
Intent localIntent = new Intent("android.intent.action.BATTERY_CHANGED");
localIntent.addFlags(1610612736);
int i = getIcon(this.mBatteryLevel);
localIntent.putExtra("status", this.mBatteryStatus);
localIntent.putExtra("health", this.mBatteryHealth);
localIntent.putExtra("present", this.mBatteryPresent);
localIntent.putExtra("level", this.mBatteryLevel);
localIntent.putExtra("scale", 100);
localIntent.putExtra("icon-small", i);
localIntent.putExtra("plugged", this.mPlugType);
localIntent.putExtra("voltage", this.mBatteryVoltage);
localIntent.putExtra("temperature", this.mBatteryTemperature);
localIntent.putExtra("technology", this.mBatteryTechnology);
localIntent.putExtra("invalid_charger", this.mInvalidCharger);
Slog.d(TAG, "level:" + this.mBatteryLevel + " scale:" + 100 + " status:" + this.mBatteryStatus + " health:" + this.mBatteryHealth + " present:" + this.mBatteryPresent + " voltage: " + this.mBatteryVoltage + " temperature: " + this.mBatteryTemperature + " technology: " + this.mBatteryTechnology + " AC powered:" + this.mAcOnline + " USB powered:" + this.mUsbOnline + " icon:" + i + " invalid charger:" + this.mInvalidCharger);
ActivityManagerNative.broadcastStickyIntent(localIntent, null);
}

private final void shutdownIfNoPower()
{
if ((this.mBatteryLevel == 0) && (!isPowered()) && (ActivityManagerNative.isSystemReady()))
{
Intent localIntent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
localIntent.putExtra("android.intent.extra.KEY_CONFIRM", false);
localIntent.setFlags(268435456);
this.mContext.startActivity(localIntent);
}
}

private final void shutdownIfOverTemp()
{
if ((this.mBatteryTemperature > 680) && (ActivityManagerNative.isSystemReady()))
{
Intent localIntent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
localIntent.putExtra("android.intent.extra.KEY_CONFIRM", false);
localIntent.setFlags(268435456);
this.mContext.startActivity(localIntent);
}
}

private final void update()
{
try
{
native_update();
processValues();
return;
}
finally
{
localObject = finally;
throw localObject;
}
}

private static void writeBatteryCapacity(int paramInt)
throws IOException
{
if (mCount == 0L)
{
FileWriter localFileWriter = new FileWriter("/sys/devices/platform/rk2918-battery/startget");
Slog.d("bryan------------------------------>", " /sys/devices/platform/rk2918-battery/startget ");
localFileWriter.write("A", 0, "A".length());
localFileWriter.close();
}
}

protected void dump(FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString)
{
if (this.mContext.checkCallingOrSelfPermission("android.permission.DUMP") != 0)
paramPrintWriter.println("Permission Denial: can't dump Battery service from from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
while (true)
{
return;
if ((paramArrayOfString != null) && (paramArrayOfString.length != 0) && (!"-a".equals(paramArrayOfString[0])))
continue;
try
{
paramPrintWriter.println("Current Battery Service state:");
paramPrintWriter.println(" AC powered: " + this.mAcOnline);
paramPrintWriter.println(" USB powered: " + this.mUsbOnline);
paramPrintWriter.println(" status: " + this.mBatteryStatus);
paramPrintWriter.println(" health: " + this.mBatteryHealth);
paramPrintWriter.println(" present: " + this.mBatteryPresent);
paramPrintWriter.println(" level: " + this.mBatteryLevel);
paramPrintWriter.println(" scale: 100");
paramPrintWriter.println(" voltage:" + this.mBatteryVoltage);
paramPrintWriter.println(" temperature: " + this.mBatteryTemperature);
paramPrintWriter.println(" technology: " + this.mBatteryTechnology);
}
finally
{
localObject = finally;
throw localObject;
}
}
}

final int getBatteryLevel()
{
return this.mBatteryLevel;
}

final int getPlugType()
{
return this.mPlugType;
}

final boolean isPowered()
{
int i = 1;
if ((this.mAcOnline) || (this.mUsbOnline) || (this.mBatteryStatus == i));
while (true)
{
return i;
int j = 0;
}
}

final boolean isPowered(int paramInt)
{
int i = 1;
if (this.mBatteryStatus == i);
while (true)
{
return i;
int j;
if (paramInt == 0)
{
j = 0;
}
else
{
int k = 0;
if (this.mAcOnline)
k = 0x0 | 0x1;
if (this.mUsbOnline)
k |= 2;
if ((paramInt & k) == 0)
j = 0;
}
}
}

void systemReady()
{
shutdownIfNoPower();
shutdownIfOverTemp();
}

class Led
{
private boolean mBatteryCharging;
private boolean mBatteryFull;
private int mBatteryFullARGB;
private int mBatteryLedOff;
private int mBatteryLedOn;
private LightsService.Light mBatteryLight;
private boolean mBatteryLow;
private int mBatteryLowARGB;
private int mBatteryMediumARGB;
private LightsService mLightsService;

Led(Context paramLightsService, LightsService arg3)
{
Object localObject;
this.mLightsService = localObject;
this.mBatteryLight = localObject.getLight(3);
this.mBatteryLowARGB = BatteryService.this.mContext.getResources().getInteger(17694748);
this.mBatteryMediumARGB = BatteryService.this.mContext.getResources().getInteger(17694749);
this.mBatteryFullARGB = BatteryService.this.mContext.getResources().getInteger(17694750);
this.mBatteryLedOn = BatteryService.this.mContext.getResources().getInteger(17694751);
this.mBatteryLedOff = BatteryService.this.mContext.getResources().getInteger(17694752);
}

void updateLightsLocked()
{
int i = BatteryService.this.mBatteryLevel;
int j = BatteryService.this.mBatteryStatus;
if (i < BatteryService.this.mLowBatteryWarningLevel)
if (j == 2)
this.mBatteryLight.setColor(this.mBatteryLowARGB);
while (true)
{
return;
this.mBatteryLight.setFlashing(this.mBatteryLowARGB, 1, this.mBatteryLedOn, this.mBatteryLedOff);
continue;
if ((j == 2) || (j == 5))
{
if ((j == 5) || (i >= 90))
this.mBatteryLight.setColor(this.mBatteryFullARGB);
else
this.mBatteryLight.setColor(this.mBatteryMediumARGB);
}
else
this.mBatteryLight.turnOff();
}
}
}
}


Avatar
Morka
Lille

Firmware Guru
Forum Posts: 203
Member Since:
2012/01/06
sp_UserOfflineSmall Offline

Thanks Received: 75
20
2012/11/16 - 21:58
sp_Permalink sp_Print

globula_neagra said
the
3Q RC0710B is a russian version of the arnova 7g2
Here is a link for the firmware Morka, maybe it helps you :)
They have almost the same devices as arnova/archos but they release far more updates :)
http://www.3-q.ru/files/fw/3Q_RC0710B_24082012_V1.0.5_fix.rar

android version is 4.0.3 (RK2918_ANDROID4.0.3-SDK_V2.10_20120205)
I look at the smali code, the battery indicator works

Avatar
Darragh Cooney
New Member
Forum Posts: 5
Member Since:
2012/07/14
sp_UserOfflineSmall Offline
21
2012/11/19 - 21:36
sp_Permalink sp_Print

Can someone give me the correct steps to flash this firmware, It doesn't work if I just copy kernel, I have Arnova 7G2.

Will their be a specific version designed for Arnova 7G2?

Avatar
globula_neagra
Birmingham

Moderator

Firmware Guru
Forum Posts: 2424
Member Since:
2012/01/05
sp_UserOfflineSmall Offline

Thanks Received: 264
22
2012/11/19 - 23:30
sp_Permalink sp_Print

have you read the first post of morka ?
there is a tutorial on how to flash the rom.

The following users say thank you to globula_neagra for this useful post:

Morka
Avatar
Morka
Lille

Firmware Guru
Forum Posts: 203
Member Since:
2012/01/06
sp_UserOfflineSmall Offline

Thanks Received: 75
23
2012/11/25 - 09:45
sp_Permalink sp_Print

Fixe : At startup/reboot does not run the tablet, treated USB/charger connection (or not disconnect it)

Fixe : Battery indicator shows the real  level

For all Roms based RK2918 Android 4.1.1 Jelly Bean Oma's rom ,kasty-arn and MorkaMod JB

http://www.arctablet.com/users/forum/battery_fix_update_beta.zip

 

MorkaMod JB V1.2 Final

http://www.arctablet.com/blog/forum/arnova-g2-general-discussions/morkamod-jb-android-4-1-1-jelly-beanall-g2-and-g3

The following users say thank you to Morka for this useful post:

Oma7144, poseidon9000, bukaneri, Agation.52, Sowa, blinkydamo
Avatar
stojsins
New Member
Forum Posts: 2
Member Since:
2012/11/27
sp_UserOfflineSmall Offline

Thanks Received: 1
24
2012/11/27 - 06:51
sp_Permalink sp_Print

Morka said
Fixe : At startup/reboot does not run the tablet, treated USB/charger connection (or not disconnect it)

Fixe : Battery indicator shows the real  level

For all Roms based RK2918 Android 4.1.1 Jelly Bean Oma's rom ,kasty-arn and MorkaMod JB

http://www.arctablet.com/users/forum/battery_fix_update_beta.zip

I try this fix on my Prestigio 5097 Android 4.1.1 Jelly Bean Oma's rom from Recovery, and I get error. I think status 6 is was...

Avatar
stojsins
New Member
Forum Posts: 2
Member Since:
2012/11/27
sp_UserOfflineSmall Offline

Thanks Received: 1
25
2012/11/27 - 07:08
sp_Permalink sp_Print

But now I extract services.jar form zip archive, and replace original in system/framework with this one, and batery status works just fine, and I can also start tablet without charger.
Thanks a lot!

The following users say thank you to stojsins for this useful post:

Morka
Forum Timezone: Europe/Paris

Most Users Ever Online: 749

Currently Online:
73 Guest(s)

Currently Browsing this Page:
1 Guest(s)


Devices in use: Desktop (66), Phone (7)

Top Posters:

finless: 604

DarthJabba: 551

maikal: 394

mussonero1: 350

alex: 252

damo: 243

DanielVd: 237

Mark06: 222

Newest Members:

heydude

Varnanfilms

jacklewis3

123456asd

valdes1964

pipo2015max

Forum Stats:

Groups: 10

Forums: 185

Topics: 6037

Posts: 60500

 

Member Stats:

Guest Posters: 43

Members: 262194

Moderators: 5

Admins: 1

Administrators: admin

Moderators: globula_neagra, exelletor, JochenKauz, Oma7144, cracktech


CrewRKTablets moderators: JochenKauz and Astralix