Saturday, January 31, 2015

Q8 V1 7 Android Tablet Firmware

Q8 V1.7 Allwinner A13 

Android Tablet Firmware Download 
Board ID V1.7 
Chipset : A13
2 Cam 
The most demanding firmware ever. 
Board ID V1.7  Chipset : A13 2 Cam

Encyclopedia Allwinner :-

Read Article About Allwinner A1X Chips 

What board id,Software version does my tablet pc have ? 

Recognize Tablet Firmware

Specifications:


LCD                
7"  Capacitive Touch Screen
Screen Resolution 
800 x 600 Pix
Processor 
1.2GHZ Cortex
Chipset / Boxchip
 Allwinner
RAM
512 DDR3
Built in Memory
4 GB
External Memory
Support Micro Card  (MAX 32GB)
Wifi
802.11 b/g/n  supported
Blue tooth
 N/A
3G
 Support USB 3G Dongle, EVDO/WCDMA
Camera
0.3 Megapixel front , 1.3 Megapixel                                                     
HDMI
Supported
Speaker
Built IN
Weight
0.623 KG
Android Version
4.0 
Battery 
 3-4 Hours 





Flashing Tools:
  • Flashing Tool :                LiveSuit Pack
  • Flashing Tool:                 Phoenix Usb Pro
Flashing Tutorials:
  • Livesuit Tutorial :  how to flashing tablet with Livesuit
  • Phoenix Usb PrO Video Tutorial :Tutorial
Recommended Tools: 

You can also use : Android Multi Tools

Tablets Restore / Installation Guide . 

The following firmware / ROM file will be used   when your Android tablet facing various problems . In case of
1. Forgotten Pattern Lock , 
2.Too many pattern attempt / Reset user lock
3. Android Tablet stuck on Gmail account
4. Android Tablet stuck on Android logo
5.Android Tablet hang on startup 
you can use this Android Tablet firmware  ROM to make your Android China tablet working again . Make sure to charge battery . Power failure during flashing may result dead or broken tablet.
Flashing stock firmware should be last option.
Download :Stock Firmware
Download :
DOWNLOAD OFFICIAL FIRMWARE



Related Posts:-

  • Q8 V6.6 Generic Rom
  • Q8 V1.7 Generic Rom
  • Q8 V2.6 GSL1680 Generic Rom
  • q8-mxc622x-20121101 Generic Rom
  • Q8-atm7013 Generic Rom
  • Q8-v15-zhongxing-Generic Rom
  • Q8-a13-51324 Generic Rom
  • Q8 V12 Generic Rom

Read more »

Application development for Android

Application development for Android





Application development for Android
Read more »

Complete Jquery Video Tutorials in Urdu and Hindi

 
 
jQuery is a JavaScript Library That Allows Web Developers To Add Extra Functionality To Their Websites. It is Open Source And Provided For Free Under The MIT License. In Recent  jQuery Has Become The Most Popular JavaScript Library Used in Web Development.

To Implement jQuery a Web Developer Simple Needs To Refrence The Jquery JavaScrip File With in The HTML of a Webpage. Some Websites Host Their Own Local Copy of jQuery, While Others Simply Reference The Librarry Hosted By GooGle or The jQuery Server.

Here is The Complete Video Course of jQuery in Urdu & Hindi. This is a Playlist of Videos Straight From My Youtube Channel, So You Can Watch All the Videos By Playing only The First one, So If You are in Pakistan Then First Open YouTube and Then Watch These Videos, However, Im Traying to Upload the Videos To Any other Site So You will Able to Watch All of Them here:-




Read more »

Friday, January 30, 2015

How to Unbrick Lenovo IDEATAB A1000 Android Tablets

LENOVO IDEATAB
A Series
A1000
Android Tablets

How to Unbrick Lenovo Tablet Cause by Charging Issue and Power On problem.


Unbrick Lenovo IdeaTab A1000
Lenovo IdeaTab A1000


The lenovo Ideatab A1000 tablets sometimes cannot power on and charge with adapter , Usb or PC ,when power too low and system is under low power situation. These symptoms only appear to IdeaTab A1000 Tab. Other lenovo tablets does not face this kind problem. Lenovo tablets are high performance and best tablet in the market. The graphics, Material quality does not less from any other well named company. 

How to Solve Charging Failure and Power on  Issue :


1. Download IdeaTab A1000 fix tool
2. Double click on icon to run the exe file and install Fix Tool.

Unbrick Lenovo Tablets
Ideatab Unbricking 
3. Run software , Insert data cable to Pc , Long press volume up key and insert cable. Click on Start (As shown in above image) 

Unbrick Lenovo Tablets

4. Fix Tool install patch automatically in tablet os system . A message window will pop up " Idea Tab A1000 tablet has been done , Please connect charger" Installation complete and tablet is updated. You are done . 


Note: All the Names,logo,software,images are property of Lenovo
Read more »

Creating a Flex AIR Screenshot app Part 23

Today we continue working on cropping.

When testing the previous code, you may have noticed that there is a slight problem when you hold down the mouse while resizing, then move the mouse out of the scroller area and move it back in - the cursor changes to the default cross, while it should be one of the four resize cursors.

To set them correctly, go to the drawOver() function and add a switch..case which checks for resizeDirection value and sets the cursor accordingly when the mouse is rolled back into the drawing area and resizing is true:

private function drawOver(evt:MouseEvent):void {
if (dragging) {
cursorManager.setCursor(dragCursor, 2, -9, -9);
} else
if (resizing) {
switch(resizeDirection) {
case "upleft":
case "downright":
cursorManager.setCursor(resizeDiag2Cursor, 2, -9, -9);
break;
case "upright":
case "downleft":
cursorManager.setCursor(resizeDiag1Cursor, 2, -9, -9);
break;
case "left":
case "right":
cursorManager.setCursor(resizeHorizontalCursor, 2, -9, -9);
break;
case "top":
case "bottom":
cursorManager.setCursor(resizeVerticalCursor, 2, -9, -9);
break;
}
} else {
cursorManager.setCursor(cropCursor, 2, -9, -9);
}
}

Now, lets go find that "Export selection" button in "crop" navigator content, set its enabled property to {canExportCrop} and click event handler to doExportCrop(). Also, change the cropHTML objects type from s:BitmapImage to mx:Image:

<s:NavigatorContent id="crop">
<s:VGroup width="{contentBox.width}" height="100%" gap="0" horizontalAlign="center">
<mx:HBox backgroundColor="#999999" width="100%" height="24" verticalScrollPolicy="off" verticalAlign="middle" paddingLeft="2">
<s:Button label="Back" click="{stack.selectedChild = loadpage;}" />
<s:Button label="Export selection" enabled="{canExportCrop}" click="doExportCrop();" />
</mx:HBox>
<s:Scroller width="{(contentBox.width>cropHTML.width+15)?(cropHTML.width+15):(contentBox.width)}" height="{contentBox.height-24}" id="scrollHTML">
<s:Group>
<mx:Image id="cropHTML" />
<s:SpriteVisualElement id="cropDraw" width="{cropHTML.width}" height="{cropHTML.height}" />
<mx:Box width="{cropHTML.width}" height="{cropHTML.height}" alpha="0" id="drawArea" backgroundColor="#000000"/>
<s:Label id="displayWidth" color="#000000" mouseEnabled="false" />
<s:Label id="displayHeight" color="#000000" mouseEnabled="false" />
</s:Group>
</s:Scroller>
</s:VGroup>
</s:NavigatorContent>

Declare this canExportCrop boolean. Declare a vriable called cropBD (BitmapData) as well:

[Bindable]
private var canExportCrop:Boolean = false;
private var cropBD:BitmapData;

Go to changeState() function and set canExportCrop to false in the "crop" conditional:

if (stack.selectedChild == crop) {
maximize();
contentBox.setStyle("horizontalAlign", "left");
var bd:BitmapData = new BitmapData(tempHTML.width, tempHTML.height, false);
bd.draw(tempHTML);
var b:Bitmap = new Bitmap(bd, "auto", true);
cropHTML.source = b;
drawArea.addEventListener(MouseEvent.MOUSE_DOWN, drawDown);
addEventListener(MouseEvent.MOUSE_UP, drawUp);
drawArea.addEventListener(MouseEvent.MOUSE_MOVE, drawMove);
displayWidth.filters = [new GlowFilter(0xffffff, 1, 3, 3, 50)];
displayHeight.filters = [new GlowFilter(0xffffff, 1, 3, 3, 50)];
drawArea.addEventListener(MouseEvent.MOUSE_OVER, drawOver);
drawArea.addEventListener(MouseEvent.MOUSE_OUT, drawOut);
displayHeight.text = "";
displayWidth.text = "";
cropDraw.graphics.clear();
canExportCrop = false;
}

Now go to drawRectangle(). In the end add a conditional checking if both dimensions of the selected area are more than 0, set canExportCrop to true if true, to false if false.

private function drawRectangle():void {
displayWidth.x = drawingRect[0];
if (displayWidth.x + displayWidth.width > cropDraw.width) {
displayWidth.x -= displayWidth.width;
}
displayWidth.y = drawingRect[1] - 12;
if (displayWidth.y < 0) {
displayWidth.y += displayWidth.height;
}
displayWidth.text = Math.abs(drawingRect[2]) + "px";
displayHeight.x = drawingRect[0] + drawingRect[2] + 4;
if (displayHeight.x + displayHeight.width > cropDraw.width) {
displayHeight.x -= (displayHeight.width + 4);
}
displayHeight.y = drawingRect[1] + drawingRect[3] - 12;
if (displayHeight.y < 0) {
displayHeight.y += displayHeight.height;
}
displayHeight.text = Math.abs(drawingRect[3]) + "px";
cropDraw.graphics.clear();
cropDraw.graphics.lineStyle(1, 0xff0000);
cropDraw.graphics.beginFill(0x00ff00, 0.15);
cropDraw.graphics.drawRect(drawingRect[0], drawingRect[1], drawingRect[2], drawingRect[3]);
cropDraw.graphics.endFill();
if (drawingRect[2] > 0 && drawingRect[3] > 0) {
canExportCrop = true;
}else {
canExportCrop = false;
}
}

Now create this doExportCrop() function, set cropBD to a new BitmapData object, and use the draw method to capture the selected area. Then move on to cropsettings page:

private function doExportCrop():void {
cropBD = new BitmapData(drawingRect[2], drawingRect[3], false);
cropBD.draw(cropHTML, new Matrix(1, 0, 0, 1, -drawingRect[0], -drawingRect[1]));
stack.selectedChild = cropsettings;
}

In cropsettings, add a BitmapImage object with an id of cropImage.

<s:NavigatorContent id="cropsettings">
<s:BitmapImage id="cropImage"/>
</s:NavigatorContent>

Go to changeState(). Add a new conditional for cropsettings page. Create a new Bitmap object, with bitmap data of cropBD, set cropImages source to this bitmap.

Now we can see what we cropped. Thats all for today!

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:custom="*"
xmlns:mx="library://ns.adobe.com/flex/mx" showStatusBar="false"
width="550" height="600" creationComplete="init();">


<fx:Declarations>
<mx:ArrayCollection id="headerTitles">
<fx:Object step="Step one:" description="load a web page." />
<fx:Object step="Loading..." description="please wait." />
<fx:Object step="Step two:" description="set your export preferences." />
<fx:Object step="Step two:" description="select the area you wish to crop." />
<fx:Object step="Step three:" description="set your export preferences for the cropped image." />
<fx:Object step="Exporting:" description="please wait." />
</mx:ArrayCollection>
</fx:Declarations>

<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

.descriptionText{
fontSize: 24;
color: #fff;
}

.descriptionText2{
fontSize: 16;
color: #fff;
}

.settingText{
fontSize: 16;
color: #fff;
}

#headStep{
fontSize: 30;
fontWeight: bold;
color: #ffffbb;
}

#headDesc{
fontSize: 30;
color: #ffffff;
}
</fx:Style>

<fx:Script>
<![CDATA[
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filters.GlowFilter;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.utils.Timer;
import mx.controls.HTML;
import mx.core.FlexHTMLLoader;
import mx.events.FlexNativeWindowBoundsEvent;
import mx.controls.Alert;
import mx.events.ResizeEvent;
import mx.graphics.codec.IImageEncoder;
import mx.graphics.codec.JPEGEncoder;
import mx.graphics.codec.PNGEncoder;
import mx.graphics.ImageSnapshot;
import spark.components.Scroller;
import spark.primitives.BitmapImage;
import flash.filesystem.FileMode;
import mx.managers.PopUpManager;

[Bindable]
private var urlString:String;
private var tempHTML:HTML = new HTML();

private var preferences:SharedObject = SharedObject.getLocal("kirshotPreferences");
[Bindable]
private var pref_screensizes:Array;
[Bindable]
private var pref_format:String;
[Bindable]
private var pref_quality:int;
[Bindable]
private var pref_folder:Boolean;
[Bindable]
private var pref_destination:String;
[Bindable]
private var exportText:String;
private var screenGo:String;
private var drawing:Boolean = false;
private var dragging:Boolean = false;
private var resizing:Boolean = false;
private var inDragArea:Boolean = false;
private var inResizeArea:Boolean = false;
private var drawingRect:Array = [];
private var dragOffsetX:int = 0;
private var dragOffsetY:int = 0;
[Bindable]
private var drawPreviousX:int = 0;
[Bindable]
private var drawPreviousY:int = 0;
private var resizeDirection:String;
[Bindable]
private var canExportCrop:Boolean = false;

[Embed(source="../lib/cursor_crop.png")]
private var cropCursor:Class;

[Embed(source="../lib/cursor_move.png")]
private var dragCursor:Class;

[Embed(source="../lib/cursor_resize_vertical.png")]
private var resizeVerticalCursor:Class;
[Embed(source="../lib/cursor_resize_horizontal.png")]
private var resizeHorizontalCursor:Class;
[Embed(source="../lib/cursor_resize_diag1.png")]
private var resizeDiag1Cursor:Class;
[Embed(source="../lib/cursor_resize_diag2.png")]
private var resizeDiag2Cursor:Class;

private var screenSettings:Array;
private var cropBD:BitmapData;

private function init():void {
//preferences.data.firsttime = null;

// Set preferences if loaded for the first time
if (preferences.data.firsttime == null) {
preferences.data.firsttime = true;
preferences.data.screensizes = [
{ checked:true },
{ checked:true, w:1280, h:1024 },
{ checked:true, w:1280, h:800 },
{ checked:true, w:1024, h:768 },
{ checked:false, w:"", h:"" },
{ checked:false, w:"", h:"" },
{ checked:false, w:"", h:"" } ];
preferences.data.format = "JPEG";
preferences.data.quality = 100;
preferences.data.folder = true;
preferences.data.destination = File.documentsDirectory.nativePath;
preferences.flush();
}

// Set preferences loaded from local storage
pref_screensizes = preferences.data.screensizes;
pref_format = preferences.data.format;
pref_quality = preferences.data.quality;
pref_folder = preferences.data.folder;
pref_destination = preferences.data.destination;

addElement(tempHTML);
removeElement(tempHTML);
}

private function doBrowse():void{
var file:File = new File();
file.addEventListener(Event.SELECT, browseSelect);
file.browseForOpen("Load a webpage");

function browseSelect(evt:Event):void {
urlInput.text = file.nativePath;
}
}

private function goScreenshot(screen:String):void {
screenGo = screen;
stack.selectedChild = screenshotloading;
urlString = urlInput.text;

addElement(tempHTML);
tempHTML.htmlLoader.useCache = false;
tempHTML.horizontalScrollPolicy = "off";
tempHTML.verticalScrollPolicy = "off";
tempHTML.visible = false;
tempHTML.addEventListener(Event.COMPLETE, onTempLoad);
tempHTML.htmlLoader.load(new URLRequest(urlString));
}

private function onTempLoad(evt:Event):void {
tempHTML.removeEventListener(Event.COMPLETE, onTempLoad);
if(screenGo=="screenshot"){
stack.selectedChild = screenshotsettings;
}
if (screenGo == "crop") {
if(tempHTML.contentWidth <= 4096 && tempHTML.contentHeight <= 4096){
var t:Timer = new Timer(1000, 1);
t.addEventListener(TimerEvent.TIMER_COMPLETE, tComplete);
t.start();
tempHTML.width = tempHTML.contentWidth;
tempHTML.height = tempHTML.contentHeight;
function tComplete(evt:TimerEvent):void {
stack.selectedChild = crop;
}
}else {
Alert.show("Dimensions of a screenshot cannot exceed 4096 pixels.", "Sorry...");
stack.selectedChild = loadpage;
}
}
}

private function cancelLoading():void {
tempHTML.removeEventListener(Event.COMPLETE, onTempLoad);
tempHTML.cancelLoad();
stack.selectedChild = loadpage;
removeElement(tempHTML);
}

private function screenshotBack():void {
saveScreenshotSettings();
stack.selectedChild = loadpage;
removeElement(tempHTML);
}

private function changeState():void {
if (stack.selectedChild == loadpage) {
contentBox.setStyle("horizontalAlign", "center");
urlInput.text = urlString;
tempHTML.width = 1;
tempHTML.height = 1;
tempHTML.removeEventListener(Event.COMPLETE, onTempLoad);
tempHTML.htmlLoader.loadString("<html></html>");
}
if (stack.selectedChild == crop) {
maximize();
contentBox.setStyle("horizontalAlign", "left");
var bd:BitmapData = new BitmapData(tempHTML.width, tempHTML.height, false);
bd.draw(tempHTML);
var b:Bitmap = new Bitmap(bd, "auto", true);
cropHTML.source = b;
drawArea.addEventListener(MouseEvent.MOUSE_DOWN, drawDown);
addEventListener(MouseEvent.MOUSE_UP, drawUp);
drawArea.addEventListener(MouseEvent.MOUSE_MOVE, drawMove);
displayWidth.filters = [new GlowFilter(0xffffff, 1, 3, 3, 50)];
displayHeight.filters = [new GlowFilter(0xffffff, 1, 3, 3, 50)];
drawArea.addEventListener(MouseEvent.MOUSE_OVER, drawOver);
drawArea.addEventListener(MouseEvent.MOUSE_OUT, drawOut);
displayHeight.text = "";
displayWidth.text = "";
cropDraw.graphics.clear();
canExportCrop = false;
}
if (stack.selectedChild == screenshotsettings) {
screenSettings = [set2, set3, set4, set5, set6, set7];
contSize.text = "Full size (" + tempHTML.contentWidth + "x" + tempHTML.contentHeight + ")";
loadScreenshotSettings();
}
if (stack.selectedChild == cropsettings) {
var cropB:Bitmap = new Bitmap(cropBD);
cropImage.source = cropB;
}
}

private function loadScreenshotSettings():void {
set1checkbox.selected = pref_screensizes[0].checked;

for (var i:int = 0; i < screenSettings.length; i++) {
screenSettings[i].checked = pref_screensizes[i + 1].checked;
screenSettings[i].w = pref_screensizes[i + 1].w;
screenSettings[i].h = pref_screensizes[i + 1].h;
}

if (pref_format == "JPEG") {
screenRadioJPEG.selected = true;
} else {
screenRadioPNG.selected = true;
}
}

private function saveScreenshotSettings():void {
pref_screensizes[0].checked = set1checkbox.selected;

for (var i:int = 0; i < screenSettings.length; i++) {
pref_screensizes[i + 1].checked = screenSettings[i].checked;
pref_screensizes[i + 1].w = screenSettings[i].w;
pref_screensizes[i + 1].h = screenSettings[i].h;
}

if (screenRadioJPEG.selected == true) {
pref_format == "JPEG";
} else {
pref_format == "PNG";
}

preferences.data.screensizes = pref_screensizes;
preferences.data.format = pref_format;
preferences.data.quality = pref_quality;
preferences.data.folder = pref_folder;
preferences.data.destination = pref_destination;
preferences.flush();
}

private function formatChange(newformat:String):void {
pref_format = newformat;
}

private function startExportScreenshot():void {
var canExport:Boolean = true;

for (var i:int = 0; i < screenSettings.length; i++) {
if (screenSettings[i].checked && ((screenSettings[i].w == "" || screenSettings[i].w == 0) || (screenSettings[i].h == "" || screenSettings[i].h == 0))) {
canExport = false;
}
}

if (canExport) {
if ((pref_folder && folderField.text != "") || !pref_folder) {
saveScreenshotSettings();
exportScreen();
}else {
Alert.show("Folder name should not be blank!", "Oops...");
}
}else {
Alert.show("One or more selected screen sizes are not entered or are invalid!", "Oops...");
}
}

private function screenshotDestination():void {
var newDestination:File = new File(pref_destination);
newDestination.browseForDirectory("Select directory");
newDestination.addEventListener(Event.SELECT, destinationSelect);

function destinationSelect(evt:Event):void {
pref_destination = newDestination.nativePath;
}
}

private function exportScreen():void {
var encoder:IImageEncoder;
var bd:BitmapData;
var byteArray:ByteArray;
var folderName:String = (pref_folder)?(folderField.text):("");
var fileName:String;
var file:File;
var fileStream:FileStream;
var screensToExport:Array = [];
stack.selectedChild = export;

if (pref_format == "JPEG") {
encoder = new JPEGEncoder(pref_quality);
}
if (pref_format == "PNG") {
encoder = new PNGEncoder();
}

// add full-size screen to array if checked
if (pref_screensizes[0].checked) {
screensToExport = [ { w:tempHTML.contentWidth, h: tempHTML.contentHeight, full:true} ];
}

// add the rest screens to array if checked
for (var i:int = 0; i < screenSettings.length; i++) {
if (pref_screensizes[i + 1].checked) {
screensToExport.push( { w: pref_screensizes[i + 1].w, h:pref_screensizes[i + 1].h } );
}
}

// if nothing is checked, go to first page and stop code
if (screensToExport.length == 0) {
removeElement(tempHTML);
stack.selectedChild = loadpage;
return;
}

// create a timer that repeats itself as many times as many items there are in the array
var timer:Timer = new Timer(2000, screensToExport.length);
timer.addEventListener(TimerEvent.TIMER, onTimer);
// set sizes to the first size of the array
if (screensToExport[0].full) {
tempHTML.horizontalScrollPolicy = "off";
tempHTML.verticalScrollPolicy = "off";
}else {
tempHTML.horizontalScrollPolicy = "auto";
tempHTML.verticalScrollPolicy = "auto";
}
if(screensToExport[0].h <= 4096 && screensToExport[0].w <= 4096){
tempHTML.height = screensToExport[0].h;
tempHTML.width = screensToExport[0].w;
}
updateExportText(screensToExport[0].w, screensToExport[0].h, 1, screensToExport.length);
timer.start();

function onTimer(evt:TimerEvent):void {
// do export for the current size
if(screensToExport[timer.currentCount-1].h <= 4096 && screensToExport[timer.currentCount-1].w <= 4096){
timer.stop();
doExport();
timer.start();
}else {
Alert.show("Cannot export " + screensToExport[timer.currentCount-1].w + "x" + screensToExport[timer.currentCount-1].h + " - dimensions of a screenshot cannot extend 4096.","Sorry");
}
// change the size if this was not the last size in the array
if (timer.currentCount != screensToExport.length) {
tempHTML.horizontalScrollPolicy = "auto";
tempHTML.verticalScrollPolicy = "auto";
if(screensToExport[timer.currentCount].h <= 4096 && screensToExport[timer.currentCount].w <= 4096){
tempHTML.height = screensToExport[timer.currentCount].h;
tempHTML.width = screensToExport[timer.currentCount].w;
}
updateExportText(screensToExport[timer.currentCount].w, screensToExport[timer.currentCount].h, timer.currentCount+1, screensToExport.length);
}else {
// if it was the last size in the array, return to first page
timer.stop();
removeElement(tempHTML);
stack.selectedChild = loadpage;
}
}

function doExport():void {
bd = new BitmapData(tempHTML.width, tempHTML.height, false);
bd.draw(tempHTML, null, null, null, null, true);
byteArray = encoder.encode(bd);
fileName = pref_destination + File.separator + folderName + File.separator + tempHTML.width + "x" + tempHTML.height + "." + pref_format;
file = new File(fileName);
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(byteArray);
fileStream.close();
}

function updateExportText(w:int, h:int, current:int, total:int):void {
exportText = "Exporting " + w + "x" + h + "." + pref_format + " (" + current + "/" + total + ")";
}
}

private function drawDown(evt:MouseEvent):void {
if(!inDragArea && !inResizeArea){
drawing = true;
drawingRect = [evt.target.mouseX, evt.target.mouseY, 0, 0];
drawPreviousX = evt.target.mouseX;
drawPreviousY = evt.target.mouseY;
drawRectangle();
}
if (inDragArea && !inResizeArea) {
dragging = true;
dragOffsetX = evt.target.mouseX - drawingRect[0];
dragOffsetY = evt.target.mouseY - drawingRect[1];
}
if (inResizeArea) {
resizing = true;
setResizingCoordinates();
}
}

private function drawUp(evt:MouseEvent):void{
drawing = false;
dragging = false;
resizing = false;
}

private function drawMove(evt:MouseEvent):void{
if (drawing) {
// bottom - right
if (evt.target.mouseX > drawPreviousX && evt.target.mouseY > drawPreviousY) {
drawingRect[0] = drawPreviousX;
drawingRect[1] = drawPreviousY;
drawingRect[2] = evt.target.mouseX - drawPreviousX;
drawingRect[3] = evt.target.mouseY - drawPreviousY;
drawRectangle();
}
// bottom - left
if (evt.target.mouseX < drawPreviousX && evt.target.mouseY > drawPreviousY) {
drawingRect[0] = evt.target.mouseX;
drawingRect[1] = drawPreviousY;
drawingRect[2] = drawPreviousX - evt.target.mouseX;
drawingRect[3] = evt.target.mouseY - drawPreviousY;
drawRectangle();
}
// top - right
if (evt.target.mouseX > drawPreviousX && evt.target.mouseY < drawPreviousY) {
drawingRect[0] = drawPreviousX;
drawingRect[1] = evt.target.mouseY;
drawingRect[2] = evt.target.mouseX - drawPreviousX;
drawingRect[3] = drawPreviousY - evt.target.mouseY;
drawRectangle();
}
// top - left
if (evt.target.mouseX < drawPreviousX && evt.target.mouseY < drawPreviousY) {
drawingRect[0] = evt.target.mouseX;
drawingRect[1] = evt.target.mouseY;
drawingRect[2] = drawPreviousX - evt.target.mouseX;
drawingRect[3] = drawPreviousY - evt.target.mouseY;
drawRectangle();
}
}

if (dragging) {
var newX:int = evt.target.mouseX - dragOffsetX;
var newY:int = evt.target.mouseY - dragOffsetY;
drawingRect[0] = newX;
drawingRect[1] = newY;
validSelectionPositionCheck();
drawRectangle();
}

if (resizing) {
if (resizeDirection == "downright" && evt.target.mouseX > drawPreviousX && evt.target.mouseY > drawPreviousY) {
drawingRect[2] = evt.target.mouseX - drawPreviousX;
drawingRect[3] = evt.target.mouseY - drawPreviousY;
}
if (resizeDirection == "upleft" && evt.target.mouseX < drawPreviousX && evt.target.mouseY < drawPreviousY) {
drawingRect[0] = evt.target.mouseX;
drawingRect[1] = evt.target.mouseY;
drawingRect[2] = drawPreviousX - evt.target.mouseX;
drawingRect[3] = drawPreviousY - evt.target.mouseY;
}
if (resizeDirection == "downleft" && evt.target.mouseX < drawPreviousX && evt.target.mouseY > drawPreviousY) {
drawingRect[0] = evt.target.mouseX;
drawingRect[1] = drawPreviousY;
drawingRect[2] = drawPreviousX - evt.target.mouseX;
drawingRect[3] = evt.target.mouseY - drawPreviousY;
}
if (resizeDirection == "upright" && evt.target.mouseX > drawPreviousX && evt.target.mouseY < drawPreviousY) {
drawingRect[0] = drawPreviousX;
drawingRect[1] = evt.target.mouseY;
drawingRect[2] = evt.target.mouseX - drawPreviousX;
drawingRect[3] = drawPreviousY - evt.target.mouseY;
}
if (resizeDirection == "top" && evt.target.mouseY < drawPreviousY) {
drawingRect[1] = evt.target.mouseY;
drawingRect[3] = drawPreviousY - evt.target.mouseY;
}
if (resizeDirection == "bottom" && evt.target.mouseY > drawPreviousY) {
drawingRect[1] = drawPreviousY;
drawingRect[3] = evt.target.mouseY - drawPreviousY;
}
if (resizeDirection == "right" && evt.target.mouseX > drawPreviousX) {
drawingRect[0] = drawPreviousX;
drawingRect[2] = evt.target.mouseX - drawPreviousX;
}
if (resizeDirection == "left" && evt.target.mouseX < drawPreviousX) {
drawingRect[0] = evt.target.mouseX;
drawingRect[2] = drawPreviousX - evt.target.mouseX;
}
drawRectangle();
}

if (!drawing && !dragging && !resizing){
cursorManager.removeAllCursors();
var lineClickArea:int = 8;
if (Math.abs(evt.target.mouseX - drawingRect[0])<lineClickArea && Math.abs(evt.target.mouseY - drawingRect[1])<lineClickArea) {
cursorManager.setCursor(resizeDiag2Cursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "upleft";
}else
if (Math.abs(evt.target.mouseX - (drawingRect[0]+drawingRect[2]))<lineClickArea && Math.abs(evt.target.mouseY - (drawingRect[1]+drawingRect[3]))<lineClickArea) {
cursorManager.setCursor(resizeDiag2Cursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "downright";
}else
if (Math.abs(evt.target.mouseX - drawingRect[0])<lineClickArea && Math.abs(evt.target.mouseY - (drawingRect[1]+drawingRect[3]))<lineClickArea) {
cursorManager.setCursor(resizeDiag1Cursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "downleft";
}else
if (Math.abs(evt.target.mouseX - (drawingRect[0]+drawingRect[2]))<lineClickArea && Math.abs(evt.target.mouseY - drawingRect[1])<lineClickArea) {
cursorManager.setCursor(resizeDiag1Cursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "upright";
}else
if (evt.target.mouseX > drawingRect[0] && evt.target.mouseX < drawingRect[0] + drawingRect[2] && Math.abs(evt.target.mouseY - drawingRect[1])<lineClickArea) {
cursorManager.setCursor(resizeVerticalCursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "top";
}else
if (evt.target.mouseX > drawingRect[0] && evt.target.mouseX < drawingRect[0] + drawingRect[2] && Math.abs(evt.target.mouseY - (drawingRect[1]+drawingRect[3]))<lineClickArea) {
cursorManager.setCursor(resizeVerticalCursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "bottom";
}else
if (evt.target.mouseY > drawingRect[1] && evt.target.mouseY < drawingRect[1] + drawingRect[3] && Math.abs(evt.target.mouseX - drawingRect[0])<lineClickArea) {
cursorManager.setCursor(resizeHorizontalCursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "left";
}else
if (evt.target.mouseY > drawingRect[1] && evt.target.mouseY < drawingRect[1] + drawingRect[3] && Math.abs(evt.target.mouseX - (drawingRect[0] + drawingRect[2]))<lineClickArea) {
cursorManager.setCursor(resizeHorizontalCursor, 2, -9, -9);
inDragArea = false;
inResizeArea = true;
resizeDirection = "right";
}else
if (evt.target.mouseX > drawingRect[0] && evt.target.mouseX < drawingRect[0] + drawingRect[2] && evt.target.mouseY > drawingRect[1] && evt.target.mouseY < drawingRect[1] + drawingRect[3]) {
cursorManager.setCursor(dragCursor, 2, -9, -9);
inDragArea = true;
inResizeArea = false;
}else {
cursorManager.setCursor(cropCursor, 2, -9, -9);
inDragArea = false;
inResizeArea = false;
}
}
}

private function setResizingCoordinates():void {
if (resizeDirection == "downright") {
drawPreviousX = drawingRect[0];
drawPreviousY = drawingRect[1];
}else
if (resizeDirection == "upleft") {
drawPreviousX = drawingRect[0] + drawingRect[2];
drawPreviousY = drawingRect[1] + drawingRect[3];
}else
if (resizeDirection == "downleft") {
drawPreviousX = drawingRect[0] + drawingRect[2];
drawPreviousY = drawingRect[1];
}else
if (resizeDirection == "upright") {
drawPreviousX = drawingRect[0];
drawPreviousY = drawingRect[1] + drawingRect[3];
}else
if (resizeDirection == "top") {
drawPreviousY = drawingRect[1] + drawingRect[3];
}else
if (resizeDirection == "bottom") {
drawPreviousY = drawingRect[1];
}else
if (resizeDirection == "left") {
drawPreviousX = drawingRect[0] + drawingRect[2];
}else
if (resizeDirection == "right") {
drawPreviousX = drawingRect[0];
}
}

private function drawRectangle():void {
displayWidth.x = drawingRect[0];
if (displayWidth.x + displayWidth.width > cropDraw.width) {
displayWidth.x -= displayWidth.width;
}
displayWidth.y = drawingRect[1] - 12;
if (displayWidth.y < 0) {
displayWidth.y += displayWidth.height;
}
displayWidth.text = Math.abs(drawingRect[2]) + "px";
displayHeight.x = drawingRect[0] + drawingRect[2] + 4;
if (displayHeight.x + displayHeight.width > cropDraw.width) {
displayHeight.x -= (displayHeight.width + 4);
}
displayHeight.y = drawingRect[1] + drawingRect[3] - 12;
if (displayHeight.y < 0) {
displayHeight.y += displayHeight.height;
}
displayHeight.text = Math.abs(drawingRect[3]) + "px";
cropDraw.graphics.clear();
cropDraw.graphics.lineStyle(1, 0xff0000);
cropDraw.graphics.beginFill(0x00ff00, 0.15);
cropDraw.graphics.drawRect(drawingRect[0], drawingRect[1], drawingRect[2], drawingRect[3]);
cropDraw.graphics.endFill();
if (drawingRect[2] > 0 && drawingRect[3] > 0) {
canExportCrop = true;
}else {
canExportCrop = false;
}
}

private function drawOver(evt:MouseEvent):void {
if (dragging) {
cursorManager.setCursor(dragCursor, 2, -9, -9);
} else
if (resizing) {
switch(resizeDirection) {
case "upleft":
case "downright":
cursorManager.setCursor(resizeDiag2Cursor, 2, -9, -9);
break;
case "upright":
case "downleft":
cursorManager.setCursor(resizeDiag1Cursor, 2, -9, -9);
break;
case "left":
case "right":
cursorManager.setCursor(resizeHorizontalCursor, 2, -9, -9);
break;
case "top":
case "bottom":
cursorManager.setCursor(resizeVerticalCursor, 2, -9, -9);
break;
}
} else {
cursorManager.setCursor(cropCursor, 2, -9, -9);
}
}

private function drawOut(evt:MouseEvent):void {
cursorManager.removeAllCursors();
}

private function validSelectionPositionCheck():void {
if (drawingRect[0] < 0) {
drawingRect[0] = 0;
}
if (drawingRect[0] > drawArea.width - drawingRect[2]) {
drawingRect[0] = drawArea.width - drawingRect[2];
}
if (drawingRect[1] < 0) {
drawingRect[1] = 0;
}
if (drawingRect[1] > drawArea.height - drawingRect[3]) {
drawingRect[1] = drawArea.height - drawingRect[3];
}
}

private function doExportCrop():void {
cropBD = new BitmapData(drawingRect[2], drawingRect[3], false);
cropBD.draw(cropHTML, new Matrix(1, 0, 0, 1, -drawingRect[0], -drawingRect[1]));
stack.selectedChild = cropsettings;
}
]]>
</fx:Script>

<s:VGroup width="100%" height="100%" gap="0">
<mx:HBox backgroundColor="#333333" height="46" width="100%" paddingTop="10" paddingLeft="10">
<s:Label id="headStep" text="{headerTitles.getItemAt(stack.selectedIndex).step}" />
<s:Label id="headDesc" text="{headerTitles.getItemAt(stack.selectedIndex).description}" />
</mx:HBox>
<mx:Box backgroundColor="#666666" width="100%" height="100%" id="contentBox" horizontalAlign="center">
<mx:ViewStack id="stack" change="changeState();">
<s:NavigatorContent id="loadpage">
<s:VGroup width="100%" horizontalAlign="center" paddingTop="20">
<s:Label styleName="descriptionText">Enter the link to the page:</s:Label>
<s:HGroup>
<s:TextInput width="250" id="urlInput" text="http://" /><s:Button label="Browse local..." click="doBrowse();" />
</s:HGroup>
<s:HGroup>
<custom:ImageButton img="@Embed(../lib/b_screenshot.png)" over="@Embed(../lib/b_screenshot_over.png)" toolTip="Take screenshots" click="goScreenshot(screenshot);" buttonMode="true" enabled="{urlInput.text!=}" />
<custom:ImageButton img="@Embed(../lib/b_cut.png)" over="@Embed(../lib/b_cut_over.png)" toolTip="Crop area" click="goScreenshot(crop);" buttonMode="true" enabled="{urlInput.text!=}" />
</s:HGroup>
</s:VGroup>
</s:NavigatorContent>

<s:NavigatorContent id="screenshotloading">
<s:VGroup width="100%" horizontalAlign="center" paddingTop="20">
<s:Label styleName="descriptionText">The page is being loaded...</s:Label>
<s:Button label="Cancel" click="cancelLoading();" />
</s:VGroup>
</s:NavigatorContent>

<s:NavigatorContent id="screenshotsettings">
<s:VGroup width="100%" horizontalAlign="center" paddingTop="20">
<s:Label styleName="descriptionText2">Select screenshot screen sizes:</s:Label>
<s:SkinnableContainer backgroundColor="#999999" width="310" height="18" >
<s:CheckBox toolTip="Use this screen size" x="4" id="set1checkbox" />
<s:Label id="contSize" styleName="settingText" x="22" y="3" />
</s:SkinnableContainer>
<custom:ScreenSetting id="set2" />
<custom:ScreenSetting id="set3" />
<custom:ScreenSetting id="set4" />
<custom:ScreenSetting id="set5" />
<custom:ScreenSetting id="set6" />
<custom:ScreenSetting id="set7" />

<s:Label/>

<s:Label styleName="descriptionText2">Export as:</s:Label>
<s:HGroup>
<s:RadioButton id="screenRadioJPEG" label="JPEG" groupName="screenshotFormat" change="formatChange(JPEG);" styleName="descriptionText2" />
<s:RadioButton id="screenRadioPNG" label="PNG" groupName="screenshotFormat" change="formatChange(PNG);" styleName="descriptionText2" />
</s:HGroup>
<s:Label styleName="descriptionText2">Quality:</s:Label>
<s:HSlider id="screenQualitySlider" width="310" minimum="1" maximum="100" liveDragging="true" enabled="{pref_format==JPEG}" value="@{pref_quality}" />

<s:Label/>

<s:Label styleName="descriptionText2">Export destination:</s:Label>
<s:HGroup width="310">
<s:TextInput editable="false" width="100%" toolTip="Destination" text="{pref_destination}" />
<s:Button label="Browse" click="screenshotDestination();" />
</s:HGroup>
<s:CheckBox id="folderCheckbox" label="Create new folder with exported images" styleName="descriptionText2" selected="@{pref_folder}" />
<s:TextInput id="folderField" width="100%" toolTip="Folder name" maxChars="200" enabled="{folderCheckbox.selected}" restrict="a-zA-Z0-9._-=+" />
<s:HGroup>
<s:Button label="Back" click="screenshotBack();" />
<s:Button label="Export" click="startExportScreenshot();" />
</s:HGroup>
</s:VGroup>
</s:NavigatorContent>

<s:NavigatorContent id="crop">
<s:VGroup width="{contentBox.width}" height="100%" gap="0" horizontalAlign="center">
<mx:HBox backgroundColor="#999999" width="100%" height="24" verticalScrollPolicy="off" verticalAlign="middle" paddingLeft="2">
<s:Button label="Back" click="{stack.selectedChild = loadpage;}" />
<s:Button label="Export selection" enabled="{canExportCrop}" click="doExportCrop();" />
</mx:HBox>
<s:Scroller width="{(contentBox.width>cropHTML.width+15)?(cropHTML.width+15):(contentBox.width)}" height="{contentBox.height-24}" id="scrollHTML">
<s:Group>
<mx:Image id="cropHTML" />
<s:SpriteVisualElement id="cropDraw" width="{cropHTML.width}" height="{cropHTML.height}" />
<mx:Box width="{cropHTML.width}" height="{cropHTML.height}" alpha="0" id="drawArea" backgroundColor="#000000"/>
<s:Label id="displayWidth" color="#000000" mouseEnabled="false" />
<s:Label id="displayHeight" color="#000000" mouseEnabled="false" />
</s:Group>
</s:Scroller>
</s:VGroup>
</s:NavigatorContent>

<s:NavigatorContent id="cropsettings">
<s:BitmapImage id="cropImage"/>
</s:NavigatorContent>

<s:NavigatorContent id="export">
<s:VGroup width="100%" horizontalAlign="center" paddingTop="20">
<s:Label styleName="descriptionText" text="{exportText}" />
</s:VGroup>
</s:NavigatorContent>
</mx:ViewStack>
</mx:Box>
</s:VGroup>

</s:WindowedApplication>

Thanks for reading!
Read more »

Complete Inpage Video Tutorials in Urdu

Inpage (ان پیج )


What are the best features in Inpage ?
          
                   There are several good tools in Inpage  which can be used to make attractive Urdu files. Text Boxes & Title boxes are two good tools in Inpage which can be used to add text and then export that text to Corel Draw, Photoshop & Ms Office. Table’s option is also nice because you can simply create table and make it a project. You can make a complete data sheet by using Table in Inpage . Adding pictures to Inpage file is also very easy. You can just create a rectangle and by right clicking you can add a picture from your PC to Inpage. There are many other beautiful tools in Inpage which you will learning with video tutorials below.


Is it a complete Course of  Inpage  in Urdu+Hindi?

                          Inpage is very simple and small application software, it was released in 2000 and still it is in the same shape, programmers didn’t try to improve it. Therefore  the video course being shared here is a complete solution for learning inpage in Urdu language. So you just need to follow the video tutorials and all you’ll learn it completely in your own Urdu language.



Inpage Introduction












Read more »

Thursday, January 29, 2015

ONYO Winner S7 Android Tablet Firmware



ONYO Winner S7 .
Android Tablet
DOWNLOAD OFFICIAL FIRMWARE
Read more »

Got fast download but slow upload speeds Heres a fix

If youve found that your download speed is great, but your upload speed is abysmal, Ive got a possible solution for you. I struggled with this issue for a while and decided to write down my findings in a blog post in case I, or anyone else, runs into this in the future.

In fact, this is the second such blog post Im writing: a couple years ago, I hit the the inverse issue and documented the solution in a blog post called Got slow download but fast upload speeds over wireless? Heres a fix. That post has had several hundred thousand views and helped many people (check out the comments - I even got a marriage proposal), so Im hoping this post will be useful too!

Heres your tldr: upgrade your routers firmware.

Symptoms

I noticed that on all my devices - a Macbook Pro, iPhone, Windows desktop - webpages were sometimes taking a long time to load; it was a bit intermittent, but everything from google maps to gmail suddenly got very sluggish. I have one of their higher tier Internet plans from Comcast, so this was pretty disappointing.

I ran a bandwidth test on http://www.speedtest.net/ and the results were roughly the same across all of my devices:


At 57 Mb/s, the download speed was great; however, the upload speed was a mere 0.17 Mb/s, which is pretty much unusable. In fact, I had to re-run the test several times, as occasionally, the upload portion of the test would get stuck and never complete.

The solution

I tried rebooting the router, the cable modem, tweaking a bunch of settings, but nothing helped. I also checked with Comcast to ensure there were no issues our outages in my area, and of course, everything was fine.

Finally, I stumbled upon the solution: a firmware upgrade. My router, a Cisco/Linksys E1200, was using firmware version 2.0.02. I went over to Linksys support page, found my router, and saw that a newer version, 2.0.06, was available. Heres a snippet from the release notes:

The notes for version 2.0.04 are especially interesting, as they fix bugs with WMM (which was the cause of problems in my previous blog post), QoS, and more.

I figured it was worth a shot, downloaded the 2.0.06 firmware, and installed it through my routers admin UI. The instructions for upgrading the firmware will not be the same for all routers, but heres roughly what you need to do:
  1. Go to http://192.168.1.1 and login to your router. If youve never done this, look for instructions that came with your router or do a google search to find the default username and password.
  2. Click on "administration".
  3. Click on "firmware upgrade".
  4. You should see a page like this:
  5. Click "Choose File" and select the firmware file you downloaded.
  6. Click "Start Upgrade". DO NOT unplug your router or click anything else in the meantime; let the upgrade complete!
  7. Wait a minute or so for your router to reboot.
The results

After the router restarted, I re-ran my speed test, and the results were much nicer:


The download speed is still a zippy 57 Mb/s, but now the upload speed is fast too, at 11 Mb/s, or nearly 70x faster than what it was before. Woohoo!

I hope you found the post helpful. If your router has a different firmware upgrade process, leave a comment with the steps you followed so others can find it. Happy web browsing!
Read more »

How to root Allwinner A13 Android Tablets

How to Root Allwinner A13 Tablets


What is Rooting ?

Rooting or Root Means in Android OS

Advantage of Rooting ?


  • The Main & Killer feature of rooting is its allow installation of Custom Roms (Cyanogenmod etc)
  • Easily backup your app and data (Titanum backup is best tool)
  • Unlock many additional features on Android device.
  • Update internal storage to download more apps and games.
  • Wi-Fi threading
  • update tablets and smartphones to latest official updates even they are not out for your device.
  • upgrading baseband allow you to make better signal quality on smartphones and tablets. 
  • Allow custom themes
  • Improve the performance and battery life. 

 Disadvantage of Rooting ?. 


  • When root, you void smartphones or tablet pc warranty .
  • Sometime rooting slower your device performance . 
  • Devices can be bricked badly and stopped functioning immediately by software. 
  • Risk of viruses . (Not dangerous but could be ) 


 How to Root Allwinner A13 Tablet .


Rooting Allwinner A13 tablet is very simple. 

Method 1.
  • Download doomlord_v1_xperia-2011-ics-ro
  • Download PDAnet (ADB drivers for tablets )
  • Now Enable UNKNOWN SOURCES and Connect your tab in USB DEBUGGING mode, then run runme.bat file from the package.(Enable Unknown source can be food in setting-application-enable unknown source . Unknow source allow installation from different sources . 
  • Read the  instructions on screen. 
  • Tablet will reboot a couple of times
  • When the script finishes it will say "ALL DONE" Your tablet is rooted.
Method 2.
Source : XDA Developer

1. Download and install Moborobo
2. Connect you device to PC via USB cable (USB debugging mode on) 
3. Start Moborobo and wait to finish installing drivers. After that go to device info and you will see that device is rooted but its not (i recommend to download root checker from play store - and you will see that device isnt rooted )  
4. Download and install UnlockRoot 
5. Start UnlockRoot and you will see that device is rooted (but its not - you can check with root checker) 
6. Start ROOT process and after few moments you will have rooted device! you can check with root checker  after go to play store and download superuser application. 
Now you have FULLY rooted device  
 notice: if superuser (from play store) dont gives you popup to grant privileges then uninstall it and follow this procedure : 

 1.Download Yarvik ADB [by Orzech]
 2.Run CMD in admin mode and go to the download Yarvik ADB folder. >
Enter:  adb kill-server
 adb devices
 adb remount
 adb push Superuser.apk /system/app/ adb push su /system/bin/ adb shell "chmod 644 /system/app/Superuser.apk" 
adb shell "chmod 6755 /system/bin/su" 
adb remount 
adb reboot

more will be updated 



Read more »

Allwinner Q88d Nova Nautica 2 4 1 Tablet Pc Stock Rom

Q88D-NOVA-Nautica2-4G-4.1

Allwinner Tablet Pc Stock Rom

Board ID: Q88d Nova 

What board ID , Tablet CPU Chip ,Firmware Number does my Tablet have ?


Encyclopedia:-


Read Article About Allwinner Technology

Frequently Asked Question about Android Tablets 


Tablet Flashing Tools:

  • Tablet Flashing Tool :  Firmware upgrade tool LiveSuit & Drivers
  • Tablet Flashing Tool:   Firmware upgrade Tool Phoenix Usb Pro
  • Flashing with SD Card:Firmware update instruction with microSD card

Flashing Tutorials for Allwinner Tablets:

  • LiveSuit Tutorial :  how to flash tablet with LiveSuit
  • Phoenix Usb PrO Video Tutorial :Tutorial

Recommended Tools :


You can also use : Android Multi Tools

When I need to Flash or Restore my Tablet Pc?

Restoring your tablet pc or smartphones to stock rom is necessary when android tablet or smartphones faces the following problems. 
1. Forgotten Pattern Lock on Android Tablets. (If undone by Hard reset)
2.Too many pattern attempts / Reset user lock.(If undone by Hard reset)
3. Tablets PC stuck on Gmail account.
4. Android Tablet PC stuck on Android logo.
5.Unexpected error / Force close errors generate by Android operating system .
6. Tablet Android  hang on start-up / Multiple errors generating by OS. 
7. Market Android / Google play having problems or generating errors. 
8.Upgrading to new Android version.

you can use this Android Tablet firmware,  ROM to restore your Android China tablets to generic firmwares or upgrades . Make sure to charge battery upto 60%. Power failure during flashing may result dead or broken tablets.
Note : Consider flashing Stock firmwares , as a last option.

Download StocK Rom

Related Posts:



  • Q8 V6.6 Allwinner Stock Rom
  • Q8 V1.7 Allwinner Stock Rom
  • Q8 V2.6 GSL1680 Allwinner Stock Rom
  • Q8 mxc622x 20121101 Generic Rom
  • Q8 atm7013 Allwinner Stock Rom
  • Q8 V1.5 zhongxing Generic Rom
  • Q8 a13 51324 Allwinner Stock Rom
  • Q8 V12 Allwinner Stock Rom
  • Q8 2127 V4 03090 20120918 Stock Rom
  • Q8+ pengyang Stock Rom
  • Q8 V41C 0309 0906 Stock Rom 
  • Q8 A13 Rev 8.0 Stock Rom
  • Read more »