2020-09-26

Android Studio Complaining About Imports in "androidTest"

 If you are trying to build an androidTest with Android Studio and it can not find the classes being imported. (For example Android Studio can not find AndroidJUnit4, InstrumentationRegistry, etc.)


Like this, for example:

Change your Build Variant to debug.

This build variant "Release" causes the error from above.

This build variant "debug" solved the problem for me:


Android Studio: "androidTest" Raising "java.lang.ClassNotFoundException: Didn't find class"

 

If you are trying to run an androidTest with Android Studio and get the following error:

java.lang.NoClassDefFoundError: Failed resolution of: L....
. . .
Caused by: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file ...
. . .

Check your build.gradle (:app) File, if you have "minifyEnabled true" enabled in your debug build type

buildTypes {
    debug {
        . . .
        minifyEnabled true
        . . .

Try commenting it out.

I hope it helps.


2020-09-07

Creating a SVG Embedded Icon

Here a very short summary (by example) from "Icon System with SVG Sprites" of how to create an embedded icon in a HTML page using svg.


You can use all the following statements directly on the "body" of your html page for testing (it is better to specify the "style" block in the css section).

Example

Defining the Icon for Android-"Local" in svg:
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
  <defs>
    <symbol id="icon-location" viewBox="0 0 16 24">
      <title>Location</title>
      <path d="M0 0h24v24H0z" fill="none"/>
      <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
    </symbol>
  </defs>
</svg>

Specifying positioning of icons of class "icon":
<style>
  [class^="icon"] {
    width: 22px;
    height: 22px;
    position: relative;
    top: 2px;
    margin-right: 0px;
  }
</style>

Using the elements from above:
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
  <head>
    <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
      <defs>
      <symbol id="icon-location" viewBox="0 0 16 24">
        <title>Location</title>
        <path d="M0 0h24v24H0z" fill="none"/>
        <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
      </symbol>
      </defs>
    </svg>

    <style>
      [class^="icon"] {
      width: 22px;
      height: 22px;
      position: relative;
      top: 2px;
      margin-right: 0px;
      }
    </style>
  </head>
  
  <body>
    <svg class="icon-location">
      <use xlink:href="#icon-location"/>
    </svg> 
    in Android controls the Location <b>not only</b> the GPS.
  </body>
</html>

Result:

2020-09-06

Localização / GPS e o consumo de bateria sob Android

A ativação da "Localização" ou ("Local" em alguns modelos celulares) no Android controla a permissão geral dos aplicativos para consultar o local atual.

Isto é, ativar a "Localização" não causa necessariamente um consumo significante de bateria.

Se ativada, somente os aplicativos que receberam esta permissão podem consultar a localização.

O GPS só é ativado quando um aplicativo usa (consulta) o GPS. Isto depende das solicitações de localização do aplicativo correspondente e se o aplicativo tem permissão para executar solicitações com alta precisão (ou seja, com GPS) ou apenas com baixa precisão (ou seja, apenas com antenas de telefonia celular e estações WLAN).

O consumo da bateria depende apenas dos aplicativos que determinam a localização.

Se os aplicativos utilizam apenas as antenas de telefonia celular e estações WLAN para consultar a posição, o consumo é mínimo, pois são utilizados apenas dados que o celular está constantemente determinando de qualquer forma (para alguns modelos, mesmo independentemente de o celular estar em modo de vôo ou não).

Somente quando se utiliza o GPS para posicionamento, o consumo da bateria aumenta. A quantidade de consumo depende da freqüência com que o aplicativo utiliza o GPS.

Isso significa que é possível deixar a "Localização" ativada sem usar a bateria de forma significativa.

Para conseguir isso, é necessário selecionar "Configurações à  Localização", você tem que conceder ou revogar a permissão "Localização" para os aplicativos (dependendo de suas próprias preferências e necessidades).

Com a versão 10 do Android foi introduzido, que após a instalação de um aplicativo,o usuário pode determinar como as consultas de localização podem ser feitas pelo aplicativo:

  • "Permitir sempre" (mesmo que não visível)
  • "Permitir apenas durante a utilização da aplicação" (somente se o aplicativo for visível)
  • "Recusar" (o aplicativo nunca pode consultar o as funções de localisação)

Isto evita que os aplicativos consultem a localização sem se perceba e consumam rapidamente a bateria de maneira descontrolada.

DICA
Assim que uma das fontes de localização estiver em uso, o ícone marcado abaixo aparecerá na barra de informações na parte superior da tela.


Fontes:

Location / GPS And Battery Consumption With Android

Activating the "Location" in Android controls the general permission of apps to query the location.

I.e. activating "Location" does not necessarily cause a much higher battery consumption.

If activated, only apps that have received this permission can query the location.

The GPS is only activated when an app uses (queries) the GPS. This depends on the location requests of the corresponding app and whether the app is allowed to execute requests with high accuracy (i.e. with GPS) or only low accuracy (i.e. only with mobile phone antennas and WLAN stations).

The battery consumption depends only on the apps that determine the location.

If apps only use the mobile phone antennas and WLAN stations for positioning, the consumption is minimal, because only data is used that the cell phone is constantly determining anyway (for some models even independent of whether the cell phone is in flight mode or not).

Only when using the GPS for positioning, the battery consumption increases. The amount of consumption depends on how often the app uses the GPS.

That means it is possible to leave the "Location" activated without using the battery significantly.

To achieve this, you have to go to the Android "Settings à  Location", where you can grant or revoke the "Location" permission to the apps (depending on your own preferences and needs).

With the Android version 10 it was introduced, that after the installation of an app, the user is asked on how location queries may be performed by the app:

  • "Allow all the time" (even if not visible)
  • "Allow only while using the app" (only if the app is visible)
  • "Deny" (the app is never allowed to query the location.)

This prevents apps from querying the location undetected and quickly draining the battery without control.

HINT
As soon as one of the "Location" sources is in use, the icon marked below appears on the information bar at the top of the screen.


Sources:

Standort / GPS und Akkuverbrauch unter Android

Das Aktivieren des "Standorts" in Android steuert die allgemeine Berechtigung von Apps, den Standort abzufragen.

D.h. die "Standort" Aktivierung verursacht nicht zwingend einen wesentlich höheren Akkuverbrauch.

Wenn aktiviert, können nur Apps, die diese Berechtigung erhalten haben, den Standort abfragen.

Das GPS wird erst eingeschaltet, wenn eine App das GPS verwendet (abfragt). Dies hängt von den Ortungsanfragen der entsprechenden App ab und ob die App Anfragen mit hoher Genauigkeit (d.h. mit GPS) oder nur niedriger Genauigkeit (d.h. nur mit Mobilfunkantennen und WLAN Stationen) ausführen darf.

Der Akkuverbrauch hängt nur von den Apps ab, die den Standort ermitteln.

Wenn Apps nur die Mobilfunkantennen und WLAN Stationen für die Ortung verwenden, ist der Verbrauch minimal, weil somit nur Daten verwendet werden, die das Handy sowieso ständig ermittelt (bei einigen Modellen sogar unabhängig ob sich das Handy im Flugmodus befindet oder nicht).

Erst bei der Verwendung des GPS für die Ortung, erhöht sich der Akkuverbrauch. Die Höhe des Verbrauchs hängt davon ab, wie oft die App das GPS nutzt.

D.h. es ist möglich den "Standort" aktiviert zu lassen, ohne das Akku bedeutend zu beanspruchen.

Um dies zu realisieren, muss man unter den Android " Einstellungen à  Standort", den einzelnen Apps die "Standort"-Berechtigung erteilen bzw. entziehen (je nach eigenem Ermessen und Bedarf).

Mit der Android-Version 10 wurde eingeführt, dass nach der Installation einer App der Benutzer gefragt wird, wie Standort-Abfragen durch diese App erfolgen dürfen:

  • "immer zugelassen" (auch wenn nicht sichtbar)
  • "nur während Nutzung der App zulassen" (nur wenn die App sichtbar ist)
  • "ablehnen" (die App darf nie den Standort abfragen)

Somit kann verhindert werden, dass Apps unbemerkt den Standort abfragen und den Akku rasch unkontrolliert aufbrauchen.

TIPP
Sobald eine der "Standort"-Quellen verwendet wird, erscheint das unten hervorgehobene Symbol auf der Informationsleiste am oberen Bildschirmrand.


Quellen: