Google Keep v.3.1.204.00 (Blacked Out & Clear)

Keep es una aplicación que nos permite organizar la información personal mediante el uso de notas. Podremos tomar notas, hacer listas, añadir fotos, y muchas cosas más.


Si ya la estas utilizando, pero quieres darle un nuevo "look" puedes instalar esta versión modificada. Las versiones "inverted" o "Blacked Out" ayudan en el rendimiento de la batería, al usar un tono oscuro y la versión "clear" se ve muy bien!




Descargalo aquí > Black Google Keep v.3.1.204.00 (Es un zip flasheable desde el Custom Recovery)




Descargalo aquí > Black Google Keep v.3.1.204.00 LP [Solo para Lollipop] (Es un zip flasheable desde el Custom Recovery)



Descargalo aquí > Clear Google Keep v.3.1.204.00 (Es un zip flasheable desde el Custom Recovery) 




Descargalo aquí > Clear Google Keep v.3.1.204.00 LP [Solo para Lollipop] (Es un zip flasheable desde el Custom Recovery)




Como lo instalamos


  • Descarga el archivo
  • A diferencia de la versión anterior esta es un archivo .zip creado para instalarlo desde el recovery, por lo que necesitas tener un custom recovery instalado en tu equipo
  • Pones el equipo en modo recovery y flasheas el archivo
  • Listo





Fuente



Hecha un vistazo por los demás enlaces para que pongas tu Android al día!!!



Dropbox (Blacked Out o Transparente)



Dale un "look" diferente a tu equipo con estas aplicaciones (Blacked Out)



Twitter (Negro & Clear) [Actualizado]


 


Dale un "look" diferente a tu equipo con estas aplicaciones (Blacked Out o Transparente)








Flipboard (Blacked Out)






Gmail (Blacked Out & Clear)



Mas información: xda


Enlace 2


Liquid Music Player Pro v.0.2beta - Material Design


Liquid Music Player Pro (reproductor de música Material Design) Simple es el nuevo Smart. Liquid Music Player es una aplicación nueva e innovadora y revolucionaria que es la versión pro de reproductor de música líquido y de forma continua en el desarrollo

Esta aplicación es una de las más poderosas, sencilla y sorprendentemente rápida, más que otras aplicaciones.



Hermosas skins para hacer de su reproductor de música se vea más sobresaliente, y estas también hacen de su reproductor de música obtener la experiencia siguiente nivel.

La música del diseño de materiales está evolucionando, por favor probarlo y dígale a su opinión para hacerlo crecer juntos.


Actualmente, cuenta con siguientes características:


  • Mejor jugador de la música del diseño de materiales
  • Buscar y reproducir su música por álbumes, artistas, géneros, canciones, listas de reproducción y carpetas recientes al.
  • Crear y Editar lista de reproducción
  • apoyo scrobbling través Scrobble last.fm droide y simple
  • Apoyo letras incrustado
  • letra de apoyo a través de plugin de terceros
  • 7 bandas de ecualizador
  • apoyo preset y refuerzo de graves
  • El apoyo LockScreen para 4.0+
  • widgets de la pantalla 3 casa (4x2,4x2,4x1).
  • Usar el color de la carátula del álbum (una característica única probarlo)
  • Apoyo Estatuto de notificación: ilustraciones del álbum de visualización, el título y artista, reproducción / pausa, saltar hacia adelante y dejar de controles en estado de notificación.
  • Controles Auricular / Bluetooth
  • mostrar efecto fresco transparencia cuando se juega
  • arte artista y género de arte se hacen de combinación de disco y canciones de arte.
  • Brillante, característica: darle a su teléfono una sacudida a tocar la canción siguiente / anterior
  • pieles de fondo magnífico, efecto fresco transparencia para hermosa experiencia
  • Compatibilidad con auriculares. Apoyo a un botón y botones varios auriculares. Deje su dispositivo en el bolsillo!
  • Biblioteca musical con SEARCH. Encuentra toda la música nunca ha sido tan fácil.
  • compatible con la reproducción sin pausas
  • temporizador programable sueño
  • Edición de Etiquetas
  • Muchos Tema
  • Posibilidad de personalizar todos los aspectos de la aplicación
  • utiliza álbum arte color a la vista jugando
  • Color 24 tema
  • Luz y tema oscuro
  • Apoyo vista de la tarjeta
  • consumen tan poco como 10 MB de RAM. (Sólo RAM servicio es de 10 mb) 
  • la carátula del álbum de cultivos
  • muchos modos de clasificación
  • editor de metadatos
  • Apoyo para las vistas lst y cuadrícula
  • carga la carátula del álbum de pausa para el desplazamiento suave.



Funciones exclusivas para la versión Pro:

  • Muchos más temas
  • editor de metadatos
  • el apoyo futuro de actualización
  • y muchos más















Descargalo desde el Play Store > Liquid Music Player | Liquid Music Player Pro





Descargalo aquí como .apk > Liquid Music Player Pro v.0.2beta


(PSP) Prince Of Persia The Forgotten Sands Full Game Highly Compressed (PPSSPP) 411MB







Original Size - 700 MB
Compressed size - 411 MB

TESTED ON MICROMAX UNITE 2 A106

CLICK HERE TO DOWNLOAD (411MB)

NOTE- You Need PPSSPP To Play This Game


[App] [Android 4.4+] ORIGINAL ANDROID M LAUNCHER FOR KITKAT AND LOLLIPOP DEVICES

This is Original Android M Launcher which Is Extracted From "Android M Developer Preview" It Works On All Android 4.4+ Devices And It Is Also Tested On Micromax Unite 2 A106



Enjoy The Feel Of Android M On Your KitKat And Lollipop Devices.

DOWNLOAD LINKS

DOWNLOAD VELVET APK

DOWNLOAD ANDROID M LAUNCHER APK

HOW TO INSTALL
> Install Velvet Apk
> Install Android M Launcher Apk
> Done

Credits
Prayas Premanand Motghare (For Screenshots)


Contact Killer Sniper 3.0.0 Modded Apk+Data 79MB Free Download

THIS GAME IS TESTED ON MICROMAX UNITE 2 A106








DESCRIPTION

Becoming a master of assassin and do the most amazing action in the game brought by GLU. You are hired to intrude secure areas and get rid of some targets that are high profile. Employs deadly attacks and always in your path of only rule, Respect the Contract. CK: SNIPER is more than an action game  but also the strategy to create well-placed shot to the target and always stay within the contract rule.

KEY POINTS:

Select Your Contracts

Eradicate a group of adversaries, destruct whole bases or spot out the single target that values most. The next goals are in your hands.

Scrutinize and Shoot down

Get involved on more than 250 missions and deal with unique goal campaigns. Scrutinize targets from far then shoot them down with accurate shots, strike enemy main head on or intrude the lines without revealing your identity

Upgraded Modifiable Armory

Boost your guns and sources protections to defend your stockpile. Reload your rifles for sniper and assaults, heavy firearms, tesla weapon, rocket triggers, throwing blades, first aid kit and etc.

Combat for Player vs Player Primacy

Attack other players’ sources, steal their infrastructures and be the undefeatable champion on the PvP mode

Grasp Your Surroundings

Select your way through every objective and use protection to your benefit. Deactivate sentry weapons, explode the denotative objects and avoid incoming attack

Adventure the Worls

Move invisibly from a location to another and get deal with the latest world class contract. It is all in your hand to be the uttermost global mercenary.

Classy and mesmeric tablet device video game!

FRESH UPCOMING:

New mission to destroy Brazilian drug dealer in the new region of South America

Make use the found parts to build drones for protect your base

Move gun parts and set up new powerful guns

Win exclusive prizes by dominating top gamers

Some solution related to bug and minor issues

CK: Sniper can be played for free but it has several items that must be purchased with real money especially for extra goods. All properties and designs of the game app, personal data and collection are subjected to Glu’s Mobile. Check out the ToS and PP from Glu.com. The game app also offers in-app buying. The current version of CK: Sniper is v.2.0. to play this game, the device must support android version of 3.0 Honeycomb or higher.

HOW TO INSTALL
> Extract File
> Install Apk
> Move Data To SDcard/android/obb
> Play Online

DOWNLOAD LINKS

DOWNLOAD CONTACT KILLER SNIPER (79MB)


AT&T anuncia pre-venta del LG G4


A partir de mañana, 29 de mayo a las 12:01am el LG G4 estará disponible para pre-venta en www.att.com para clientes de AT&T.

Este lujoso teléfono estará disponible en color Gris Metálico o color Negro en Piel Genuina. El G4 llegara a tiendas de AT&T a partir del viernes, 5 de junio.


AT&T ofrece las siguientes opciones para los clientes adquirir el nuevo LG G4:



Gris Metálico



  • AT&T Next - $0 pronto pago
  • $21.00 por 30 pagos mensuales en Next 24
  • $26.25 por 24 pagos mensuales en Next 18
  • $31.50 por 20 pagos mensuales en Next 12
  • Con contrato de 2 años: $199.99
  • Sin contrato $629.99



Negro en Piel Genuina


  • AT&T Next - $0 pronto pago
  • $22.34 por 30 pagos mensuales en Next 24
  • $27.92 por 24 pagos mensuales en Next 18
  • $33.50 por 20 pagos mensuales en Next 12
  • Con contrato de 2 años: $239.99
  • Sin contrato $669.99


Como oferta de promoción, los clientes que adquieran el G4 a través de www.att.com podrán adquirir la nueva Tablet LG G Pad F 8.0 por solo $0.99. (Precio de la tablet por separado es $149.99 con contrato de 2 años)


En adición a esta oferta, LG está proveyendo a los clientes una bacteria adicional gratis, tarjeta de memoria de 32GB y una base (cradle) para cargar para el teléfono.


Les incluyo un video del nuevo equipo y más detalles en este Blog post .





Android example: Thread, Handler and Looper

Example to run task on background thread using Thread, Handler and Looper:


com.example.androidthreadlooperhandler.MainActivity
package com.example.androidthreadlooperhandler;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

Button btn1, btn2;
TextView textInfo;

MyThread myThread;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button)findViewById(R.id.button1);
btn2 = (Button)findViewById(R.id.button2);
textInfo = (TextView)findViewById(R.id.info);

btn1.setOnClickListener(btnOnClickListener);
btn2.setOnClickListener(btnOnClickListener);

myThread = new MyThread();
myThread.start();
}

@Override
protected void onDestroy() {
super.onDestroy();

//stop and quit the background Thread
myThread.handler.getLooper().quit();
}

View.OnClickListener btnOnClickListener =
new View.OnClickListener(){

@Override
public void onClick(View v) {
if(myThread.handler != null){
Message message;
if(v==btn1){
message = myThread.handler.obtainMessage(MyThread.MSG1);
}else{
message = myThread.handler.obtainMessage(MyThread.MSG2);
}
myThread.handler.sendMessage(message);
}
}
};

private class MyThread extends Thread{

static final int MSG1 = 1;
static final int MSG2 = 2;

public Handler handler;

public void run(){
Looper.prepare();
handler = new MyHandler();
Looper.loop();
}

private class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
// ...Run in background

int what = msg.what;
switch (what){
case MSG1:

//doing something...
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}

runOnUiThread(new Runnable() {
@Override
public void run() {
textInfo.setText("Message 1");
}
});

break;
case MSG2:

//doing something...
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}

runOnUiThread(new Runnable() {
@Override
public void run() {
textInfo.setText("Message 2");
}
});

break;

}
}
}
}
}


layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"/>

<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 2"/>

<TextView
android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</LinearLayout>



In this example, background thread update UI (TextView) via runOnUiThread(). It's modified in next example to implement Handlers in both UI and background thread, to pass data in both direction via Handler/Message.


(UPDATED) WhatsApp DeSi 2.12.94 v2.8 LIKE A Boss



Now Download WhatsApp Desi and Be a Boss Of WhatsApp. Download Latest version Of WhatsApp Desi
Mostly hinglish language strings Material Design icon
Material Design default wallpaper








Steps Required To INSTALL WhatsApp Desi
> First Of All uninstall official WhatsApp
> Install WhatsApp Desi
> Open And Verify Your Mobile Number
> Enjoy your WhatsApp Desi

DOWNLOAD LINKS

WhatsApp_DeSi 2.12.94 v2.8 - Twitter emoji.apk

WhatsApp_DeSi 2.12.94 v2.8 - Google emoji.apk

WhatsApp_DeSi 2.12.94 v2.8 - One emoji.apk

WhatsApp_DeSi 2.12.94 v2.8 - Stock emoji.apk


ENJOY IT AND KEEP VISITING CRAZY4ANDROID.BLOGSPOT.IN


Loot Offer :- Install EzyPoint App and Get Rs 20 Free Recharge Instant

Hello Guys another Rs 20 Free recharge Offer is Here ,EzyPoint which is a new recharge and Bill payment App offer Rs 20 Free recharge for every New Users.EzyPoint app offer 20 credits which is equal to Rs 20 and we use this credit For free recharge .

So Guys before this offer close Loot lo this Recharge offer.Below i am Telling each steps How you Get This Offer Just Follow the steps yo Get This offer.


Steps To Get Rs 20 Free recharge From EzyPoint APP:-
> First Download EzyPoint app From PLAY STORE :-[ Play store link ]
> Now Open The app and register with Your detail like name email mobile numb & Pass.
> Now Yoy see See welcome screen in which you Got message that you Have won 20 EzyPoints.



> Now in  Recharge section
> enter your mobile number and amount Rs 20 and Click On recharge Tab.
> In Next page click On Redeem points Button.
> Now you see pop Button Just Press Redeem Button.


Hurreey ! You have Done successfully Recharge with your points.You receive Rs 20 Recharge in minute

KEEP VISITING CRAZY4ANDROID.BLOGSPOT.IN FOR DAILY TRICKS


Google officially announced its IoT platform, Project Brillo

Brillo extends the Android platform to all your connected devices, so they are easy to set up and work seamlessly with each other and your smartphone.

https://developers.google.com/brillo/




FIFA 15: Ultimate team v1.3.2 Apk & Data Free Download











DESCRIPTION

FIFA 15: Ultimate team - create your football dream team and participate in different championships and leagues. Show your coaching skills in this Android game. Assemble your team and start the match. Follow the course of the match and substitute players. Use different tactics. Buy the famous football players like Lionel Messi, Eden Hazard and others. Compete in various championships, like the English Premier League, German Bundesliga, and so on. Send your team to the field and win!

Game features:

> Great graphics
> Good controls
> Real matches
> Over 10000 football players
> Over 500 real teams
> Over 30 leagues and stadiums

THIS GAME IS TESTED ON
MICROMAX UNITE 2 A106

DOWNLOAD LINKS

DOWNLOAD FIFA 15 APK (20MB)

DOWNLOAD FIFA 15 DATA (1011MB)


Soul Movie Pro v.8.5.0


Prueba ligero, intuitivo reproductor de vídeo. Es un reproductor de vídeo que soporta formatos SMI, SRT y SBV de subtítulos.



Los archivos SMI, SRT y SBV deberán existir en el mismo lugar que el archivo de película. Si tienes /sdcard/AAA.mp4, el archivo SMI deberá tener /sdcard/AAA.smi.


Soporta:


  • Subtitle mirroring for Side by side video
  • Support ASS / SSA
  • SMI con color,
  • Ruby tag,
  • Sincronización y ajuste de tiempo de subtítulos,
  • Tamaño de subtítulos,
  • Posición de subtítulos,
  • Buscador de carpetas,
  • Control de volumen,
  • Control de brillo,
  • Modo inverso de botones de volúmen,
  • Repetición con posiciones A-B,
  • Información de tiempo restante (click duración)
  • Etc.


Adicionalmente, Soul Movie Pro soporta 


  • Visor de lista de subtítulos
  • Búsqueda por subtítulos
  • Búsqueda en diccionarios de subtítulos
  • Soporte Bookmark
  • Etc.











Descargalo desde el Play Store > Soul Movie | Soul Movie Pro







Descargalo aquí > Soul Movie Pro v.8.5.0





POR FAVOR COLABORA! Estamos solicitando sus donaciones para continuar adquiriendo equipos, espero puedan entender que ninguna compañía nos apoya y es muy difícil hacerse de todos los equipos para los cual nos preguntan. Puedes hacer la donación en el siguiente enlace

SDK for Android M (preview) is available now

Android SDK for Android M (API 22, MNC Preview) is available. It can be installed in Android SDK Manager.


Android App to control Arduino+ESP8266 web connected LED

It's a Android app connect to Arduino Due + ESP8266 WiFi module web server (in my another blog arduino-er), control the Due on-board LED. Android have to join the AP of ESP8266 before send command.


com.example.arduinoesp.MainActivity
package com.example.arduinoesp;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;


public class MainActivity extends ActionBarActivity {

EditText editIp;
Button btnOn, btnOff;
TextView textInfo1, textInfo2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editIp = (EditText)findViewById(R.id.ip);
btnOn = (Button)findViewById(R.id.bon);
btnOff = (Button)findViewById(R.id.boff);
textInfo1 = (TextView)findViewById(R.id.info1);
textInfo2 = (TextView)findViewById(R.id.info2);

btnOn.setOnClickListener(btnOnOffClickListener);
btnOff.setOnClickListener(btnOnOffClickListener);
}

View.OnClickListener btnOnOffClickListener = new View.OnClickListener(){
@Override
public void onClick(View v) {
String onoff;
if(v==btnOn){
onoff="1";
}else{
onoff="0";
}

btnOn.setEnabled(false);
btnOff.setEnabled(false);

String serverIP = editIp.getText().toString()+":80";

TaskEsp taskEsp = new TaskEsp(serverIP);
taskEsp.execute(onoff);

}
};

private class TaskEsp extends AsyncTask<String, Void, String> {

String server;

TaskEsp(String server){
this.server = server;
}

@Override
protected String doInBackground(String... params) {

String val = params[0];
final String p = "http://"+server+"?led="+val;

runOnUiThread(new Runnable(){
@Override
public void run() {
textInfo1.setText(p);
}
});

String serverResponse = "";
HttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpGet = new HttpGet();
httpGet.setURI(new URI(p));
HttpResponse httpResponse = httpclient.execute(httpGet);

InputStream inputStream = null;
inputStream = httpResponse.getEntity().getContent();
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(inputStream));
serverResponse = bufferedReader.readLine();

inputStream.close();
} catch (URISyntaxException e) {
e.printStackTrace();
serverResponse = e.getMessage();
} catch (ClientProtocolException e) {
e.printStackTrace();
serverResponse = e.getMessage();
} catch (IOException e) {
e.printStackTrace();
serverResponse = e.getMessage();
}

return serverResponse;
}

@Override
protected void onPostExecute(String s) {
textInfo2.setText(s);
btnOn.setEnabled(true);
btnOff.setEnabled(true);
}
}

}


layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<EditText
android:id="@+id/ip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="192.168.4.1" />

<Button
android:id="@+id/bon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="LED ON" />

<Button
android:id="@+id/boff"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="LED OFF" />
<TextView
android:id="@+id/info1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"/>
<TextView
android:id="@+id/info2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"/>
</LinearLayout>


Make sure to add uses-permission of "android.permission.INTERNET" in src/main/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.arduinoesp" >

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


download filesDownload the files (Android Studio Format).

Chrome Browser - Google v.43.0.2357.78


Navega más rápido con el navegador web Chrome en tu teléfono o tablet Android. Inicia sesión para sincronizar desde tu ordenador la experiencia de navegación de Chrome y llevarla contigo dondequiera que vayas.

Búsquedas rápidas


  • Busca y navega de forma rápida, directamente desde el mismo cuadro. Selecciona lo que te interese de los resultados que aparecen mientras escribes.
  • Navega de forma más rápida gracias a la carga de páginas, el desplazamiento y el zoom acelerados.



Experiencia simple e intuitiva

  • Abre un número ilimitado de pestañas de navegador y cambia rápidamente entre ellas. En tu teléfono, cambia de pestaña como si se tratara de un abanico de cartas. En tu tablet, desliza el dedo de lado a lado para cambiar de pestaña.



Inicio de sesión

  • Inicia sesión en el navegador web Chrome para sincronizar las pestañas abiertas, los marcadores y los datos del omnibox de tu ordenador con tu teléfono o tablet. Retoma lo que estabas haciendo justo donde lo dejaste.
  • Envía páginas desde el navegador Chrome de tu ordenador al navegador Chrome de tu teléfono o tablet con un solo clic y consúltalas en cualquier lugar.



Privacidad

  • Navega de forma privada con el modo de incógnito.





Novedades
• Obtén las actualizaciones más recientes de los sitios con las notificaciones.
• Ahora, añadir tus sitios favoritos a la pantalla de inicio es aún más fácil.
• Corrección de errores y mejoras rápidas de rendimiento.




Descargalo desde el Play Store > Chrome Browser - Google





Descargalo aquí como .apk > Chrome Browser - Google v.43.0.2357.78



Android custom touch view, with callback interface.

This example, implement custom view with touch function, and also callback interface. And also implement listener at activity side. Such that the view can pass touched information to activity.


com.example.androidtouchview.TouchView.java, custom view.
package com.example.androidtouchview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class TouchView extends View {

private Paint paint, touchPaint;
private boolean touched;
private float touchX, touchY;
private float touchMajor, touchMinor;

public TouchView(Context context) {
super(context);
init(null, 0);
}

public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs, 0);
}

public TouchView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs, defStyleAttr);
}

private void init(AttributeSet attrs, int defStyle) {
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);

touchPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
touchPaint.setColor(Color.RED);
touchPaint.setStyle(Paint.Style.FILL_AND_STROKE);
touchPaint.setStrokeWidth(1);

touched = false;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

int paddingLeft = getPaddingLeft();
int paddingTop = getPaddingTop();
int paddingRight = getPaddingRight();
int paddingBottom = getPaddingBottom();

canvas.drawRect(
0,
0,
getWidth(),
getHeight(),
paint);
canvas.drawRect(
paddingLeft,
paddingTop,
getWidth()- paddingRight,
getHeight()- paddingBottom,
paint);

if(touched){
canvas.drawCircle(touchX, touchY, touchMinor, touchPaint);
canvas.drawCircle(touchX, touchY, touchMajor, paint);
}
}

@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
touchX = event.getX();
touchY = event.getY();
touchMajor = event.getTouchMajor();
touchMinor = event.getTouchMinor();
touched = true;
break;
default:
touched = false;
}

onViewTouchedListener.OnViewTouched(touchX, touchY, touched);

invalidate();
return true;
}

/*
Set up callback function
*/
private OnViewTouchedListener onViewTouchedListener;
public interface OnViewTouchedListener {
public void OnViewTouched(float x, float y, boolean touched);
}

public void setOnViewTouchedListener(OnViewTouchedListener listener) {
onViewTouchedListener = listener;
}
}


layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<TextView
android:id="@+id/touchedInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0E0">
<com.example.androidtouchview.TouchView
android:id="@+id/myTouchView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="50dp"
android:paddingBottom="50dp" />
</LinearLayout>


</LinearLayout>

com.example.androidtouchview.MainActivity
package com.example.androidtouchview;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

TextView touchedInfo;
TouchView touchView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
touchedInfo = (TextView)findViewById(R.id.touchedInfo);
touchView = (TouchView)findViewById(R.id.myTouchView);
touchView.setOnViewTouchedListener(new TouchView.OnViewTouchedListener() {
@Override
public void OnViewTouched(float x, float y, boolean touched) {
touchedInfo.setText(
"Touched: " + touched + "\n" +
"x: " + x + "\n" + "y: " + y);
}
});

}

}



download filesDownload the files (Android Studio Format).

Create custom view with touch detection

Here we implement a custom view with touch detection, to show touched area.


com.example.androidtouchview.TouchView.java, our custom view.
package com.example.androidtouchview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class TouchView extends View {

private Paint paint, touchPaint;
private boolean touched;
private float touchX, touchY;
private float touchMajor, touchMinor;

public TouchView(Context context) {
super(context);
init(null, 0);
}

public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs, 0);
}

public TouchView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs, defStyleAttr);
}

private void init(AttributeSet attrs, int defStyle) {
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);

touchPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
touchPaint.setColor(Color.RED);
touchPaint.setStyle(Paint.Style.FILL_AND_STROKE);
touchPaint.setStrokeWidth(1);

touched = false;
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

int paddingLeft = getPaddingLeft();
int paddingTop = getPaddingTop();
int paddingRight = getPaddingRight();
int paddingBottom = getPaddingBottom();

canvas.drawRect(
0,
0,
getWidth(),
getHeight(),
paint);
canvas.drawRect(
paddingLeft,
paddingTop,
getWidth()- paddingRight,
getHeight()- paddingBottom,
paint);

if(touched){
canvas.drawCircle(touchX, touchY, touchMinor, touchPaint);
canvas.drawCircle(touchX, touchY, touchMajor, paint);
}
}

@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
touchX = event.getX();
touchY = event.getY();
touchMajor = event.getTouchMajor();
touchMinor = event.getTouchMinor();
touched = true;
break;
default:
touched = false;
}
invalidate();
return true;
}
}


layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0E0">
<com.example.androidtouchview.TouchView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="50dp"
android:paddingBottom="50dp" />
</LinearLayout>


</LinearLayout>


download filesDownload the files (Android Studio Format).

Android custom touch view, with callback interface.

Office Lens v.16.0.3819.1007


Office Lens recorta, mejora y hace legibles las imágenes de pizarras y los documentos; además, las guarda en OneNote. También puedes usarlo para convertir imágenes a Word y PowerPoint o archivos PDF.

Office Lens es como tener un escáner en el bolsillo. Digitaliza las notas de pizarras como por arte de magia. Siempre encontrarás los documentos importantes o las tarjetas de presentación. Esboza tus ideas y captúralas para más tarde. 



No perderás ningún recibo ni ninguna nota adhesiva suelta. Si instalas la aplicación, aceptas estos términos y condiciones: http://aka.ms/olensandterms.



Posibles usos:


  • Captura y recorta imágenes de una pizarra y comparte las notas de reunión con los compañeros.
  • Haz copias digitales de tus documentos impresos, tarjetas de presentación o pósteres y recórtalas con precisión.
  • El texto impreso se reconoce automáticamente (por OCR) para que puedas buscar palabras en imágenes y copiarlas y editarlas.



Características:


  • En el modo Pizarra, Office Lens recorta y elimina destellos y sombras.
  • En el modo Documento, Office Lens recorta y da color a las imágenes a la perfección.
  • Las imágenes escaneadas se pueden guardar en OneNote, OneDrive o localmente en el dispositivo; tu eliges.
  • Convierte imágenes a Word (.docx) o PowerPoint (.pptx) o a archivos PDF (.pdf) y guárdalas automáticamente en OneDrive.












Descargalo desde el Play Store > Office Lens






Descargalo aquí > Office Lens v.16.0.3819.1007





Estamos solicitando sus donaciones para continuar adquiriendo equipos, espero puedan entender que ninguna compañía nos apoya y es muy difícil hacerse de todos los equipos para los cual nos preguntan. Puedes hacer la donación en el siguiente enlace