• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

a year later...

It's over a year since I got mine.
Insurance is worth whatever you pay for it. The phone got heavily damaged after it tried to commit suicide by leaping off a shelf. It still worked but it was kinda bent. They shipped me a new one next day (after 'deductible').

This phone is a Ferrari. It's got more horsepower than anything I've owned. It has to have horsepower because I do mods, including a firewall. I'm a privacy nazi.

I'll be keeping it for the foreseeable future. I kept the G4 years until it started to loop. LG gets no love, but I do what I can to spread the news. I've made converts.

Got android 9 months back. Very little visible because I use Nova, so it always looks the same.

Phone on.

The best call recording apps [UK]

Hi there guys.

I could really do with some help here.

Situation:
The sister, of a very good friend of mine is experiencing abusive phone calls from her ex.
He is extremely degrading & aggressive, he plays mind games & gasllights her
(he also does this when on the call with his children).

We need to keep a record of these calls/conversations, as if anyone pulls him up about
his behavior he is incredibly convincing, and portrays himself as the pinnacle of a
reasonable and well intentioned man.


Questions:

1. Which apps are the best for recording phone calls in the UK

2. That allow recording of both parties of the call

3. That (do not) beep or alert the other person that the call is being recorded.

(We're happy to sideload apps if needs be).


Handset type:
I believe that the sister is using a Samsung J7, on Android 9
(However I am waiting for this to be confirmed)

TIA for any help and advice, I apologise (for, perhaps TMI) but I think its helpful
to understand the background of the situation, to help us out.

Thank you very much.

How did my friend embed a link to google maps via text in Messenger?

I want to know how my friend somehow accidentally managed, halfway through typing a message to me, have it underlined, in which the underlined part of the text turned out to be a link to google maps, revealing an approximation of my location (was about 10 miles out). The first words in the underlined bit of text was, "one part". I don't know if they're a keywords or something? I couldn't reproduce it.
I'm assuming it's some kind of Gboard function, for sending quick hyperlinks with location request or something embedded in the text?

I'm so confused. Does this make sense to anyone? And if so, does anyone have any idea how to do it?

Thanks.

Weird link to my approximate location embedded in text in facebook messenger..Why? How??

I want to know how my friend somehow accidentally managed, halfway through typing a message to me, have it underlined, in which the underlined part of the text turned out to be a link to google maps, revealing an approximation of my location (was about 10 miles out). The first words in the underlined bit of text was, "one part". I don't know if they're a keywords or something? I couldn't reproduce it.

I'm assuming it's some kind of Gboard function, for sending quick hyperlinks with location request or something embedded in the text?

I'm so confused. Does this make sense to anyone? And if so, does anyone have any idea how to do it?

Thanks.

Apps Android Room: Passing method variables to @Query annotation statement

I'm trying to figure out how to pass multiple method variables to an Android Room DAO @Query statement. Below is my attempt. I'm trying to create a 'generic' @Query method to avoid duplicating it for each and every table query. As you can see from the image, I'm able to pass all my variables except the 'table' variable which identifies the table name to be searched.

I wasn't sure if anyone here works with Room enough to know or have tried this?

Thanks!

[GALLERY=media, 149]RoomQueryStatement by Guitarist posted Feb 13, 2020 at 11:13 AM[/GALLERY]

Apps Service not working when phone is idle / dozing / locked

Good evening,

I've been trying to achieve something for several days now and I literally don't know what else to try, I've basically tried everything I found online and it still doesn't work but I have the feeling that once I find the solution it must be something quite simple.

I'm working on a bigger project, but here I'm just trying to get a very simple example to work which I can later adapt to my project.

What I want to do

I want to have a counter add +1 every second for 1200 seconds (20 minutes) and write to a file every time it counts. I should end up with a file with 1200 lines with a timestamp per sample.

How I'm trying to do it

I've tried a million things, but here, I've just gone back to a very basic example so I can showcase it and ask for help:

- I have a MAIN acticity with a single START button.
- When clicking the button I start a new process from the activity. This is a FOREGROUND process.
- I start counting in a loop. When I reach 1200, the counting stops.

My problem

While the phone screen is ON everything works just fine, but as soon as I lock the screen and put my phone in my pocket, depending on the phone I'm testing on, it starts to fail.

What I would like

If someone could tell me what to modify / add / change or even do it for me and write back here (it's a really simple project) I would be extremely grateful, I'm wasting a ton of time and I just can't seem to hit the right key.

Code

Since it's a very simple project I will just copy the 4 parts it consists of right here:

XML activity_main.xml

Code:
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
  
        <Button
            android:id="@+id/start_button"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:layout_marginStart="52dp"
            android:layout_marginBottom="116dp"
            android:onClick="startProcess"
            android:text="@string/button_label_start"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
  
        <TextView
            android:id="@+id/counter_textView"
            android:layout_width="383dp"
            android:layout_height="412dp"
            android:gravity="center_horizontal|center_vertical"
            android:text="@string/counter_label_value"
            android:textSize="160sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.428"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.169" />
  
    </androidx.constraintlayout.widget.ConstraintLayout>

MANIFEST AndroidManifest.xml

Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.helloworld">
  
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
  
            <service
                android:name=".ForegroundService"
                android:enabled="true"
                android:exported="true"
                android:process=":externalProcess">
            </service>
  
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
  
    </manifest>

MAIN MainActivity.java

Java:
package com.example.helloworld;
  
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.content.ContextCompat;
  
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
  
    public class MainActivity extends AppCompatActivity {
  
        public static final String CHANNEL_ID = "ForegroundServiceChannel";
        private TextView mShowCount;
  
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
  
            int mCount = data.getIntExtra(ForegroundService.FOREGROUND_MESSAGE, -1);
            if(mShowCount != null)
                mShowCount.setText(Integer.toString(mCount));
        }
  
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mShowCount = findViewById(R.id.counter_textView);
        }
  
        @Override
        protected void onResume() {
            super.onResume();
        }
  
        @Override
        protected void onStart() {
            super.onStart();
        }
  
        @Override
        protected void onPause() {
            super.onPause();
        }
  
        @Override
        protected void onStop() {
            super.onStop();
        }
  
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
  
        @Override
        protected void onRestart() {
            super.onRestart();
        }
  
        public void startProcess(View view) {
            PendingIntent pendingResult = createPendingResult(100, new Intent(), 0);
            Intent serviceIntent = new Intent(this, ForegroundService.class);
            serviceIntent.putExtra("pendingIntent", pendingResult);
            ContextCompat.startForegroundService(this, serviceIntent);
        }
  
        public void stopProcess(View view) {
            Intent serviceIntent = new Intent(this, ForegroundService.class);
            stopService(serviceIntent);
        }
    }

FOREGROUND SERVICE ForegroundService.java

Java:
    package com.example.helloworld;
  
    import android.app.Notification;
    import android.app.NotificationChannel;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.app.Service;
    import android.content.Intent;
    import android.os.Build;
    import android.os.IBinder;
    import android.os.SystemClock;
    import android.util.Log;
    import androidx.core.app.NotificationCompat;
  
    import java.io.File;
    import java.io.FileWriter;
    import java.util.Date;
  
    public class ForegroundService extends Service {
  
        public static final String CHANNEL_ID = "ForegroundServiceChannel";
        public static final String FOREGROUND_MESSAGE = "com.example.helloworld.FOREGROUND_MESSAGE";
  
        private PendingIntent data;
        private int mCount;
        private File basePath;
  
        public ForegroundService() {
        }
  
        @Override
        protected void finalize() throws Throwable {
            super.finalize();
        }
  
        @Override
        public void onCreate() {
            super.onCreate();
        }
  
        @Override
        public boolean stopService(Intent name) {
            return super.stopService(name);
        }
  
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            String input = intent.getStringExtra("inputExtra");
  
            createNotificationChannel();
            Intent notificationIntent = new Intent(this, MainActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(this,
                    0, notificationIntent, 0);
            Notification notification = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
                    .setContentTitle("Foreground Service")
                    .setContentText(input)
                    .setContentIntent(pendingIntent)
                    .build();
  
            startForeground(1, notification);
            data = intent.getParcelableExtra("pendingIntent");
            this.basePath = this.getExternalFilesDir("recs");
  
            mCount = 0;
            new Thread(new Runnable() {
                public void run() {
                    try {
                        while(mCount < 1200) {
                            Intent resultIntent = new Intent();
                            resultIntent.putExtra(FOREGROUND_MESSAGE, ++mCount);
                            writeFile((new Date().getTime() / 1000) + " Increasing counter: " + mCount + "\n");
                            data.send(ForegroundService.this, 200, resultIntent);
                            SystemClock.sleep(1000);
                        }
                    }catch (Exception ignored){}
                }
            }).start();
  
            //stopSelf();
            return START_NOT_STICKY;
        }
  
        private void createNotificationChannel() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel serviceChannel = new NotificationChannel(
                        CHANNEL_ID,
                        "Foreground Service Channel",
                        NotificationManager.IMPORTANCE_DEFAULT
                );
                NotificationManager manager = getSystemService(NotificationManager.class);
                manager.createNotificationChannel(serviceChannel);
            }
        }
  
        @Override
        public void onDestroy(){
            super.onDestroy();
        }
  
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
  
        private void writeFile(String data)
        {
            File file = new File (basePath,"test");
            if (!file.exists()) {
                boolean mkdirs = file.mkdirs();
                if (!mkdirs) {
                    Log.e("RECORDING", "Error creating SAVE BASE PATH");
                }
            }
  
            try{
                File counter_file = new File(file, "counter.txt");
                FileWriter writer = new FileWriter(counter_file, true);
                writer.append(data);
                writer.flush();
                writer.close();
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }


I know I might be asking a bit too much but I'm quite desperate at this point. I'd be really greatful if someone could come up with a working solution.

Thank you very much.

Phantom Reminders every 15 seconds

For the last 4 to 5 months my LG V40 ( on Sprint running Android 9) goes crazy about once a day, and the phone Vibrates and Audio alerts me every 15 seconds until I re boot the phone. I have tried to trcak what it is using the app Unnotification, but what ever is causing it, is not registering on that app.

Kinda of driving me crazy. Any Diagnostic ocdes I can use to find the root cause?

Gmail Settings For Outlook | Gmail Outlook Settings

We have to adjust Gmail server settings whenever we connect Gmail to some different accounts whether it is an outlook or another email client. If you are not a fresh one who is working on Gmail id then it’s not a dilemma for you solely you have to open Gmail IMAP Settings set exactly according to your email client and you will get all your emails on a single program. In case you are a new bee in this then questioning expert is the most suitable option for you.

  • Poll Poll
NEW! Best Free and Safe privacy browser with private tabs and pop up blocker

Are you already using this browser ?

  • YES

    Votes: 4 57.1%
  • NO

    Votes: 3 42.9%

images


Fast, free and safe privacy browser with private tabs and pop up blocker.

The Brave Privacy Browser is your fast, free and safe web browser with a 3rd party AdBlocker and pop-up blocker. Brave prevents you from being tracked by sneaky advertisers, malware and pop-ups.

Download the best AdBlock browser app for Android today!

Fast & Secure Web Browser
No external plugins or settings! Brave privacy browser simply provides the most secure, lightning fast web browser for Android. Enjoy browsing without popups (pop up blocker), ads, malware and other annoyances.

Battery & Data Saver
Brave is a fast browser! Brave reduces page loading times, improves performance and blocks ads infected with malware. Brave shows a 2x to 4x speed increase on Android, saving your battery and data.

AdBlock Web Browser
The Brave Privacy Browser App is designed with a built-in AdBlocker (pop up blocker). Brave's free adBlocker protects you from ads which track you as you browse the web, securing your privacy.

Automatic Privacy - AdBlock Browser Protection
The Brave Privacy Browser App also protects you with leading privacy and security features such as HTTPS Everywhere (encrypted data traffic), script blocking, 3rd party cookie blocking and incognito private tabs.

App Features
• Built-in AdBlocker
• Pop up blocker (blocks ads)
• Saves data
• Saves battery
• Invasive Ad free browser
• Sync Bookmarks securely
• Tracking protection browser
• Https Everywhere (for security)
• Script Blocker
• 3rd party cookie blocker
• Bookmarks
• History
• Private tabs
• Recent tabs
• Fast search engine

About Brave
Our mission is to save the web by making a safe, private and fast browser while growing ad revenue for content creators. Brave aims to transform the online ad ecosystem with micropayments and a new revenue-sharing solution to give users and publishers a better deal, where safe, fast browsing is the path to a brighter future for an open web.

DOWNLOAD

Attachments

  • images (3).jpeg
    images (3).jpeg
    18.2 KB · Views: 501

Drift Worlds - Released Today

Drift Worlds
After years of solo development I am excited to finally say I have released my pride and joy, Drift Worlds. Drift Worlds is an arcade racer that meets real world graphics. It has aspects of both outrageous scenarios and real world physics. You will find yourself driving across desert plateau's, above the clouds across snowy tundras or deep in the depths of a volcano. There are plenty of levels that I will constantly be expanding on and with dozens of cars to choose from there will be plenty to work towards.

The Idea is simple. Enter a level and race against yourself or against the current record holder. You will work towards getting 5 stars for the level to unlock more and to earn more money. It also has real crash physics that will dint and damage your car the more you crash and fall.

This has been over 2 years in the making and I would really appreciate some feedback that I will do my best to take into account.

https://play.google.com/store/apps/details?id=com.UndividedGames.DriftWorlds

Filter

Back
Top Bottom