Android – Mobile Vision, API de detecção de faces e objetos (Find objects in photos and video, using real-time on-device vision technology. Face Detection)

face_detect

Introdução à Visão Móvel

A API Mobile Vision fornece uma estrutura para encontrar objetos em fotos e vídeos. A estrutura inclui detectores, que localizam e descrevem objetos visuais em imagens ou quadros de vídeo e uma API orientada a eventos que rastreia a posição desses objetos no vídeo.

API

Atualmente, a API Mobile Vision inclui detectores de rosto, código de barras e texto, que podem ser aplicados separadamente ou em conjunto.

O pacote de visão inclui uma estrutura de funcionalidade de base comum e subpacotes para implementações específicas de detectores:

Funcionalidade comum: com.google.android.gms.vision
Detector de rosto: com.google.android.gms.vision.face
Detector de código de barras: com.google.android.gms.vision.barcode
Detetor de texto: com.google.android.gms.vision.text

COMEÇANDO… Continue reading

Android – Convertento byte[] do onPreviewFrame em um JPEG ( Android byte[] to image in Camera.onPreviewFrame )

android-camera-surfaceview

import android.graphics.YuvImage;

[...]

private volatile byte[] imageYuvData;

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
    if(processing)return;
    imageYuvData = data;
}

[...]

public void savePreviewFrame(File file) throws Throwable {
	processing=true;
	try{
        Camera.Parameters parameters = camera.getParameters();
        Size size = parameters.getPreviewSize();
        YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),
                size.width, size.height, null);
        FileOutputStream filecon = new FileOutputStream(file);
        image.compressToJpeg(
        		new Rect(0, 0, image.getWidth(), 
        				image.getHeight()), 90,
        				filecon);
	}finally{
		processing=false;
	}
}

[...]

Android Studio / Gradle / Maven – Como fazer upload de sua biblioteca em seu repositório Maven.

maven

O plugin Maven adiciona suporte para a implantação de artefatos nos repositórios Maven.

Como utilizar (inserir no build.gradle do modulo do seu projeto):
—————-

apply plugin: 'com.android.library'
apply plugin: 'maven' //ADICIONE O PLUGIN MAVEN

//CRIE O METODO ABAIXO PARA CONFIGURAR O UPLOAD:
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: mavenLocal().getUrl()) //URL DO SEU REPO MAVEN(NO EXEMPLO ESTA USANDO O LOCAL)
            pom.artifactId ='swap_android'
            pom.groupId = 'br.com.helpdev'
            pom.version = '1.0'
        }
    }
}

Após configurado, basta sincronizar o projeto e chamar o ‘uploadArchives’: Continue reading

Android – Bloqueando a orientação de tela programaticamente

full_screen_android

Segue alguns métodos uteis para lidar com a orientação de tela programaticamente.

/**
 * Destravando orientação de tela
 *
 */
public static boolean releaseScreenOrientation(Activity activity) {
    return lockScreenOrientation(activity, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

/**
 * Travando orientação de tela na posição atual.
 *
 */
public static boolean lockCurrentScreenOrientation(Activity activity) {
    return lockScreenOrientation(activity, activity.getRequestedOrientation());
}

/**
 * Recebe como parametro: ActivityInfo.SCREEN_ORIENTATION_XXXXXX
 *
 * @param activity Activity
 * @param screenOrientation ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
 */
public static boolean lockScreenOrientation(Activity activity, int screenOrientation) {
    activity.setRequestedOrientation(screenOrientation);
    return true;
}

/**
 * Recebe como parametro: Surface.ROTATION_X
 *
 * @param activity Activity
 * @param screenRotation Surface.ROTATION_0 / 90 / 180 / 270
 */
public static boolean lockScreenRotation(Activity activity, int screenRotation) {
    if (screenRotation > -1) {
        int orientation = activity.getRequestedOrientation();
        switch (screenRotation) {
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_180:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            case Surface.ROTATION_270:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
        }
        return lockScreenOrientation(activity, orientation);
    } else {
        return false;
    }
}

Android Studio / Gradle / Maven – Como usar o seu repositório local Maven (How to use Maven Local repository for gradle build)

gradle

Para configurar seu repositório local Maven em um projeto no Android Studio, ou em qualquer outra IDE que utilize o Gradle basta configurarmos o arquivo build.grade adicionando o repositorio local e configurando sua localização. No exemplo a seguir vou configurar meu projeto para que use o mesmo repositório local maven utilizado pelo netbeans, assim consigo utilizar minhas bibliotecas java de uma maneira bem simples.

Abra o arquivo do projeto build.grade e edite da seguinte maneira: Continue reading

Android – Como reiniciar a aplicação programaticamente (How to ‘restart’ an android application programmatically)

Android reiniciar aplicativo

    public void backToMain(Bundle params) {
    	//Monta a intent para abrir a aplicação.
        Intent mStartActivity = new Intent(this, MainActivity.class);
        //Se quiser adicionar algum parametro para o inicio da aplicação:
        if (params != null) {
            mStartActivity.putExtras(params);
        }

        //Realiza o agendamento da intent de abrir o aplicativo:
        //No caso abaixo o aplicativo vai ser reaberto daqui 500ms (System.currentTimeMillis() + 500);
        PendingIntent mPendingIntent = PendingIntent.getActivity(this, 123456, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager mgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 500, mPendingIntent);

        //Mata todos processos associados a este aplicativo.
        android.os.Process.killProcess(android.os.Process.myPid());
        //Fecha o aplicativo.
        System.exit(1);
    }

Como resolver teclado travando esporadicamente no Android Studio com Ubuntu

lock_on_the_keyboard

 

Depois de um longo tempo descobri como resolver um problema que estava me deixando louco! Esporadicamente o Android Studio travava o teclado, tinha que fecha-lo e reabrir, ai quando você estava com mais de 3 projetos abertos tinha que fechar tudo e reabrir! Ele trava, simplesmente do nada, as vezes percebia que era a execução do atalho CRTL+Tab ou Editando um XML e pressionar algum atalho, enfim alguma coisa a ver com conflito de atalho do Android Studio com o Ubuntu.

Como resolver: Simples, execute o comando antes de abrir o Android Studio ou insira no /etc/profile do seu sistema:

$ ibus-daemon -rd

 

Android – Como copiar um texto programaticamente (How to Copy Text to Clip Board in Android?)

ctrl-c

private void setClipboard(Context context,String text) {
    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        clipboard.setText(text);
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
        clipboard.setPrimaryClip(clip);
    }
}