domingo, 30 de julio de 2017

Android Studio - Como crear un patron de desbloqueo







Librerias: https://github.com/aritraroy/PatternLockView
                 https://github.com/pilgr/Paper


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"

    tools:context="com.example.usuario.lockpattern.MainActivity">

    <com.andrognito.patternlockview.PatternLockView
        android:id="@+id/pattern_lock_view"
        android:layout_width="280dp"
        android:layout_height="280dp"
        android:layout_centerInParent="true"/>


   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Guardar Patron"
    android:id="@+id/btnSetearPatron"
       android:layout_below="@+id/pattern_lock_view"
       android:layout_centerHorizontal="true"/>


</RelativeLayout>




activity_principal.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_principal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    tools:context="com.example.usuario.lockpattern.Principal">


    <com.andrognito.patternlockview.PatternLockView
        android:id="@+id/pattern_lock_view"
        android:layout_width="280dp"
        android:layout_height="280dp"
        android:layout_gravity="center"
        android:layout_centerInParent="true"/>

</RelativeLayout>


MainActivity.java


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.andrognito.patternlockview.PatternLockView;
import com.andrognito.patternlockview.listener.PatternLockViewListener;
import com.andrognito.patternlockview.utils.PatternLockUtils;

import java.util.List;

import io.paperdb.Paper;


public class MainActivity extends AppCompatActivity {

    String save_pattern_key = "pattern_code";
    String final_pattern = "";
    PatternLockView mPatternLockView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Paper.init(this);
        final String save_pattern = Paper.book().read(save_pattern_key);
        if(save_pattern != null && !save_pattern.equals("null"))
        {
            setContentView(R.layout.activity_principal);
            mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view);
            mPatternLockView.addPatternLockListener(new PatternLockViewListener() {
                @Override
                public void onStarted() {

                }

                @Override
                public void onProgress(List<PatternLockView.Dot> progressPattern) {

                }

                @Override
                public void onComplete(List<PatternLockView.Dot> pattern) {
                    final_pattern = PatternLockUtils.patternToString(mPatternLockView,pattern);
                    if(final_pattern.equals(save_pattern)){
                        Toast.makeText(MainActivity.this, "Password Correct!", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(MainActivity.this,ActividadDesbloqueada.class);
                        startActivity(intent);


                    }else{ Toast.makeText(MainActivity.this, "Password Incorrecta!", Toast.LENGTH_SHORT).show();}


                }

                @Override
                public void onCleared() {

                }
            });
        }
        else
        {

            setContentView(R.layout.activity_main);
            mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view);
            mPatternLockView.addPatternLockListener(new PatternLockViewListener() {
                @Override
                public void onStarted() {

                }

                @Override
                public void onProgress(List<PatternLockView.Dot> progressPattern) {

                }

                @Override
                public void onComplete(List<PatternLockView.Dot> pattern) {
                    final_pattern = PatternLockUtils .patternToString(mPatternLockView,pattern);

                }

                @Override
                public void onCleared() {

                }
            });




            Button btnSetup = (Button)findViewById(R.id.btnSetearPatron);
            btnSetup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Paper.book().write(save_pattern_key, final_pattern);
                    Toast.makeText(MainActivity.this, "Save pattern okay!", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(MainActivity.this,Principal.class);
                    startActivity(intent);
                }
            });
        }
    }
}


Principal.java


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.andrognito.patternlockview.PatternLockView;
import com.andrognito.patternlockview.listener.PatternLockViewListener;
import com.andrognito.patternlockview.utils.PatternLockUtils;

import java.util.List;

import io.paperdb.Paper;

public class Principal extends AppCompatActivity {


    String save_pattern_key = "pattern_code";
    PatternLockView mPatternLockView;
    String final_pattern = "";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Paper.init(this);
        final String save_pattern = Paper.book().read(save_pattern_key);
        if(save_pattern != null && !save_pattern.equals("null"))
        {
            setContentView(R.layout.activity_principal);
            mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view);
            mPatternLockView.addPatternLockListener(new PatternLockViewListener() {
                @Override
                public void onStarted() {

                }

                @Override
                public void onProgress(List<PatternLockView.Dot> progressPattern) {

                }

                @Override
                public void onComplete(List<PatternLockView.Dot> pattern) {
                    final_pattern = PatternLockUtils.patternToString(mPatternLockView,pattern);
                    if(final_pattern.equals(save_pattern)){
                        Toast.makeText(Principal.this, "Password Correct!", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(Principal.this,ActividadDesbloqueada.class);
                        startActivity(intent);


                    }else{ Toast.makeText(Principal.this, "Password Incorrecta!", Toast.LENGTH_SHORT).show();}


                }

                @Override
                public void onCleared() {

                }
            });
        }
    }
}

viernes, 28 de julio de 2017

Android Studio - Utilizando SQL para almacenar productos

Tutoriales SQL Android Studio






Productos.java



package com.example.usuario.sqltutorial;
/** * Created by Usuario on 21/07/2017. */
public class Producto {

    private int _id;    private String _nombreProducto;

    public Producto(){

    }

    public Producto(String nombreProducto) {

        this._nombreProducto = nombreProducto;    }


    public void set_id(int _id) {
        this._id = _id;    }

    public void set_nombreProducto(String _nombreProducto) {
        this._nombreProducto = _nombreProducto;    }


    public int get_id() {
        return _id;    }

    public String get_nombreProducto() {
        return _nombreProducto;    }
}

MainActivity.java


package com.example.usuario.sqltutorial;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


    EditText myInput;
    TextView myText;
    MyDBHandler dbHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myInput = (EditText) findViewById(R.id.edTxtProducto);
        myText = (TextView) findViewById(R.id.textViewProducto);

        dbHandler = new MyDBHandler(this,null,null,1);
        printDataBase();

    }

    public void printDataBase(){

        String dbString = dbHandler.databaseaString();
        myText.setText(dbString);
        myInput.setText("");

    }



    public void btnAñadirProductoClick(View view){

    Producto producto = new Producto(myInput.getText().toString());
        dbHandler.addProduct(producto);
        printDataBase();

    }


    public void btnEliminarProductoClick(View view){

        String inputText = myInput.getText().toString();
        dbHandler.deleteProduct(inputText);
        printDataBase();

    }
}


MyDBHandler.java
package com.example.usuario.sqltutorial;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Usuario on 22/07/2017.
 */

public class MyDBHandler extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION=1;
    private static final String DATABASE_NAME="productos.db";
    public static final String TABLE_PRODUCTS="productos";
    public static final String COLOUM_ID="_id";
    public static final String COLOUM_PRODUCTNAME="nombreproducto";

    public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE " + TABLE_PRODUCTS + "(" +

                COLOUM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +

                COLOUM_PRODUCTNAME + " TEXT " +

                ");";
        db.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {

        db.execSQL("DROP TABLE IF EXISTS"+ TABLE_PRODUCTS);
        onCreate(db);

    }


    public void addProduct(Producto producto){

        ContentValues values = new ContentValues();
        values.put(COLOUM_PRODUCTNAME,producto.get_nombreProducto());
        SQLiteDatabase db = getWritableDatabase();
        db.insert(TABLE_PRODUCTS,null,values);
        db.close();

    }

    public void deleteProduct(String nombreProducto){

        SQLiteDatabase db = getWritableDatabase();
        db.execSQL("DELETE FROM " + TABLE_PRODUCTS + " WHERE " + COLOUM_PRODUCTNAME + "=\"" + nombreProducto + "\";");
    }

    public String databaseaString(){

        String dbString="";

        SQLiteDatabase db= getWritableDatabase();

        String query = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE 1";

        Cursor c =db.rawQuery(query,null);

        c.moveToFirst();

        while (!c.isAfterLast())

        {

            if(c.getString(c.getColumnIndex("nombreproducto"))!=null)

            {

                dbString+= c.getString(c.getColumnIndex("nombreproducto"));

                dbString+="\n";

            }

            c.moveToNext();

        }

        db.close();

        return dbString;

    }

}



activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.usuario.sqltutorial.MainActivity">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/edTxtProducto"
        android:hint="Nombre del producto" />

    <Button
        android:text="Eliminar Producto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/btnAñadirProducto"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/btnEliminarProducto"
        android:onClick="btnEliminarProductoClick" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textViewProducto"
        android:layout_below="@+id/btnAñadirProducto"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="73dp" />

    <Button
        android:text="Añadir Producto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:id="@+id/btnAñadirProducto"
        android:onClick="btnAñadirProductoClick"
        android:layout_below="@+id/edTxtProducto"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>


Android Studio - Como crear un patron de desbloqueo

Librerias : https://github.com/aritraroy/PatternLockView                   https://github.com/pilgr/Paper activity_main.xml ...