Code Monkey home page Code Monkey logo

marccrusellas / simplev6 Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.89 MB

We consider Simple, the app, a way to help people with their diseases. It offers people a way to control their alarms, control their ideas, and a way to control what they have to remember. And it offers a simple way to call emergencies, the police and their emergency contacts.

License: MIT License

Java 100.00%
alarms android-studio emergency google-maps-api java maps notebook notes police

simplev6's Introduction

Simplev6

En este sitio va a haber el proceso explicado de cada versión del diseño creado, cualquier tipo de cambio se agregará en cada sprint.

Table of Contents

Apartados

Para tener una idea base y poder empezar a desarrollar la parte de diseño hice un mockups, el programa que se utilizó fue mockups. Captura de pantalla a 2022-04-01 15-22-00 Captura de pantalla a 2022-04-01 15-27-34 Captura de pantalla a 2022-04-01 15-27-53

Una vez terminado el mockups nos encargamos de pasarlo a la app y también se está intentando agregar la versión noche y día.

Logo

El logo fue buscado por medio de un creador de logos de la página llamada hatchful que es totalmente gratis que da archivo .zip de varias medidas del logo.

Captura de pantalla de 2022-03-23 23-34-28

Diseño versión Light

Apartado de Alarmas

Screenshot_20220505_211810_com neuro simplev6

Apartado de Notas

Screenshot_20220505_211814_com neuro simplev6

Apartado de Teléfono

Screenshot_20220505_211829_com neuro simplev6

Diseño versión Night

Este en el diseño que tenemos para el modo nocturno. El cual se adaptará en conjunto con el modo nocturno del móvil

Apartado de Alarmas

Screenshot_20220505_211747_com neuro simplev6

Apartado de Notas

Screenshot_20220505_211751_com neuro simplev6

Apartado de Teléfono

Screenshot_20220505_211755_com neuro simplev6

Simplev3

En este apartado quise ya empezar hacer el diseño base verdadero que se utilizara en la aplicación, este diseño se agregará entre el sprint 4 y 5.

Logo

La app se le cambió el color, entonces hemos tenido que cambiar el color del logo. logo_transparent

Portada

Charlando con mi compañero, me enseño un diseño de colores variados y me recordó a Instagram, entonces quisimos hacer algo similar basándonos en los colores.

Captura de pantalla a 2022-03-31 16-10-42

Apartados

En esta zona estará la información de los contenidos que está conformado por: Alarmas, Notas, Control, Parental, Mapa.

Alarmas

En este apartado ya se está intentando agregar la base de datos de la aplicación.

Captura de pantalla a 2022-03-31 16-37-37

Notas

En este apartado ya se ha podido agregar la base de datos de la aplicación. Actualización, ya se ha agregado.

Mapa

Ya tenemos un código encontrado para poder agregar el Google Maps, pero todavía seguimos avanzando en otros apartados.

Captura de pantalla a 2022-03-31 16-44-53

Captura de pantalla a 2022-03-31 16-37-37

Simplev4

Control Parental

Tenemos dos apartados en los que estarán los apartados de direcciones de Google y contactos de emergencia en los cuales se guardaran contactos

image

Mapa

En este apartado se recreó un Google Maps con geo localizador incluido, donde puedes poner una ubicación fija de tu vivienda. En caso de que la persona se pierda, le da donde sale el logo de ubicación y saldrá una opción abajo a la derecha de redirigir a Google Maps con la ruta de su vivienda directamente, donde ya le saldrá todas las formas de llegar a su propiedad.

Screenshot_20220429-160718_Mapa

Screenshot_20220429-160701_Maps


Explicación código

MainActivity

este es el trozo de código es el encargado de configurar los distintos fragmentos que contiene esta sección, si quisiéramos crear otro solo tendríamos que

AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);

Si quisiéramos crear otro fragmento solo tendríamos poner:

  1. En MainActivity otro R.id."el nuevo fragmento" en esta línea
    R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
  2. En el mobile_navigation.xml poner otro fragmento parecido a este, pero con el ID y las otras características modificadas, aunque lo segundo no es totalmente necesario:
    <fragment
    android:id="@+id/navigation_notifications"
    android:name="com.neuro.simplev6.ui.notifications.NotificationsFragment"
    android:label="@string/title_notifications"
    tools:layout="@layout/fragment_notifications" />
  3. I por último en bottom_nav_menu.xml poner un ítem más para que se vea en el Bottom Navigation Drawer. Como este:
    <item
    android:id="@+id/navigation_notifications"
    android:icon="@drawable/ic_baseline_accessibility_new_24"
    android:title="@string/title_notifications" />

HomeFragment

public class HomeFragment extends Fragment implements View.OnClickListener {
Este es el fragmento principal de la aplicación, contiene las alarmas programadas. Si nos fijamos bien poder ver una línea de código que nos otorga la posibilidad de encontrar objetos sin tener que usar FindViewById(), es más rápido y no gasta tanta memoria. En el siguiente ejemplo podemos ver el uso de binding. En el HomeFragment también podemos ver que la opción de eliminar una alarma solo se puede utilizar para eliminar una alarma con el nombre test. Es motivo, no pude implementar la opción de getId en el EntityClass, y no hubiese dado error, únicamente habría sido necesario poner otro Queri en el DAO y ya habríamos podido implementar esta opción, sin embargo, si se puede eliminar directamente toda la lista, con el botón naranja. De lo que hemos hablado aparece en esta sección de código.
private void goToCreateEventActivity() {
Intent intent = new Intent(getContext(), CreateEvent.class);
startActivity(intent);
}

DashboardFragment

Este es el segundo fragmento, principalmente es el encargado de mostrar las notas. Las notas se almacenan si una base de datos, si no que se utiliza un SharedPreferences, que es un documento privado usado para almacenar pequeñas cuantidades de texto.

SharedPreferences sharedPref = getContext().getSharedPreferences("com.neuro.simplev6", Context.MODE_PRIVATE);
HashSet<String> set = (HashSet<String>) sharedPref.getStringSet("notes", null);
if (set == null){
notes.add("escrive aqui");
} else {
notes = new ArrayList<>(set);
}
Este es el código que uso para poner todas las lasta de notas en el ListView. Como podemos ver, cuando no hay ningún elemento en la lista se crea uno automáticamente para que la persona sepa lo que puede hacer. Estas son las líneas de código encajadas de hacer un Intent con Información, y permiten editar una nota.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getContext(), NotesActivity.class); // posible error
intent.putExtra("noteId", i);
startActivity(intent);
}
});

Estas son las líneas de código encargar de escucha cuando un elemento de la línea esta siento presionado por más de un momento.

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
final int itemToDelete= i;
new AlertDialog.Builder(getContext())
.setTitle("Quieres borrar la nota?")
.setIcon(R.drawable.ic_baseline_delete_sweep_24)
.setPositiveButton("Si", new DialogInterface.OnClickListener() {
public void onClick (DialogInterface dialog,int i){
notes.remove(itemToDelete);
arrayAdapter.notifyDataSetChanged();
SharedPreferences sharedPref = getContext().getSharedPreferences("com.neuro.simplev6", Context.MODE_PRIVATE);
HashSet<String> set = new HashSet<>(DashboardFragment.notes);
sharedPref.edit().putStringSet("notes", set).apply();
}
})
.setNegativeButton("No",null)
.show();
return true;
}
});
Estas líneas generan un AlertDialog, que se encarga de hacer salir una pantalla encima, con dos botones, que especifican sí que queremos o no eliminar la nota. Esto ofrece que si escogemos que sí, elimina del SharedPreferences este ítem de la Array, si, por otro lado, nos arrepentimos, podemos presionar no, y no hace nada.

Este trozo de código se encarga de hacer un Intent a una nueva activity, donde podemos originar la nota.

floating = binding.floatingActionButton2;
floating.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Accediendo a \n Añadir notas", Toast.LENGTH_LONG).show();
Intent intent2 = new Intent(getContext(), NotesActivity.class);
startActivity(intent2);
// notes.add("escrive aqui");
// ((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
}
});

NotesActivity

Esta activity está relacionada con DashboardFragment, es la que se encarga de editar las notas creadas y de editar las antiguas.

Este trozo es usado para esconder el Toolbar predefinido

if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}

NotificationsFragment

Este es el fratment que su documento principal tiene mas funciones, como por ejemplo: este trozo de codigo, busca las la variable de el primer contacto:

// conacto 1
// nombre
SharedPreferences name = requireContext().getSharedPreferences("com.neuro.simplev6", MODE_PRIVATE);
String nom = name.getString("nom", "Contacto");
// telefono
SharedPreferences sp = requireContext().getSharedPreferences("com.neuro.simplev6", MODE_PRIVATE);
tel = sp.getString("tel", "");
Posteriormente este trozo de codigo

cardView5.setOnClickListener(v -> {
// contacte emergencia
if (nom.equals("Contacto") || tel.equals("")){
Intent intent2 = new Intent(getContext(), contactoemergencia.class);
intent2.putExtra("contacto",1);
startActivity(intent2);
} else {
Intent contactcall = new Intent(Intent.ACTION_DIAL);
contactcall.setData(Uri.parse("tel:"+tel));
startActivity(contactcall);
}
});

simplev6's People

Contributors

anndres20 avatar deividmessi10 avatar marccrusellas avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.