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

WiFi calling not a feature.

Hi all.
I've purchased an LG Velvet and taken out a 5g sum only plan with EE.
WIFI calling isn't an option anywhere on my phone at all.
I've been in touch with LG and with EE numerous times about this problem.
The only thing I've established (from what I've been told) is that WiFi calling is pre-loaded onto a contract phone provided by the network. Is this true?
Also, my other question would be, how do I add it on if it's only available via a contract phone?
Thanks.

Chris.

Help What is this app

hi i was looking at apps on my tablet and phone and notice gos legacy (Com.enhance.gameservice) I am wondering what this app is and why its on my tablet but not my phone. Also what is rootpa (com.gd.mobicore.pa) are all these apps safe

(T510 Tab A)

Last ten ip on chrome

Hi all, a few months ago I managed to get into chrome & find the last ten ip that had been signing in to my account, I done it on my phone but I can't remember how I done it & can't seem to find any thing online I think it was on YouTube but can't seem to find that eather any ideas?

Help Tab S7+: mp4 on SD Card

Hey everyone,
I'm at a lost and need HELP lol

With my previous Tab A 10.5, I had no trouble transferring mp4 movies from my pc to the SD card.
Purchased the Tab S7+ last week, and its so weird and can't figure it out.

I transferred 15 mp4 movies from my pc to the SD card on my new tablet and only 3 of them plays. The 3 that plays, you can see the thumbnail with a photo, the rest are all a play button thumbnail. The black screen opens up like normal however, it stays black, the time shows 0:00:00, there's nothing.

If I take the same mp4 movie and transfer it to my Note 10+, no problem, it plays so I know there's nothing wrong with the file.

I'm not a newbie with technology, I just don't get it.

The SD Card is 1TB and brand new.
My preferred player is VLC but I also have MX Player.

What would be your suggestion/tip/trick?
Thanks,
Nat

Auto Redial - End call after ## seconds

I am using Auto Redial (apparently by Water Labs). This app, like most redial apps have a feature to end the call after some number of seconds. The max in this app is 55 seconds. What possible reason could you have for wanting to automatically kill the call you've been trying so hard to complete? "0" does not mean never. "0" is not allowed.

I am reluctant to use another app 'cause this one is free, works fine except for that, and all the other redial apps seem to have the same feature.

I really need to get a covid vaccine shot. I don't want the call to end at 55 seconds. I have to believe I am misunderstanding something. Dis don't make no sense to me.

Screenshot attached.

Attachments

  • AutoRedial.jpg
    AutoRedial.jpg
    214.1 KB · Views: 235

Help Samsung S20 stays muted after do not disturb hours

I have my Samsung S20 set to do not disturb overnight (10pm to 7am).

Every day, when 7am rolls around and do not disturb ends, the DND icon goes away...but the volume settings on ringtone, notifications and system channels are all muted. Media is the only channel that has any volume on it.

This is fairly recent behaviour - the last update was 29 December, and it wasn't doing it before that.

Is anyone else getting something like this, and does anyone have a way of working around it? Is there a setting I'm missing?

Parler shutdown

Google play, the Apple store and other's Banned the Parler app, Amazon kicked Parler from it's platform because Qanon organized on Parler.
I'm calling on all of you to take down twitter and facebook as these platforms were used by Antifa and BLM to stage attacks on cities all over the country that left many Police Officer's and Civilians Dead or wounded.
They also burned and looted many cities.
They also organized to destroy many statue's around the USA.
we're sick and tired of the two tier justice system that allows DemocRATs to get away with just about everything while going after Conservatives relentlessly.

How do you fix androidmanifest coding

My code is
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Second app">

<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">
<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>

The error are
Cannot resolve symbol
"@Style/AppTheme">
Unresolved class "MainActivity"

Moto e Music is on phone , not showing in library

Hello, I have all my music files uploaded to Moto e that I received as a gift from grandson. When I plug the phone into my laptop with USB it shows the music files are in the phone, however when I click on the icon to play music it is only showing about a dozen songs. What do I have to do to get all my music that is in my moto e into my library so it will play ? Not computer or phone savy, thank you for any help.

Apps Return Arduino Console in Android Studio APP

Hello I tried to create an android application to drive led strips, I got an Android studio project that I modified to achieve my goals. Which works pretty well. I would like to be able to display what the console of an arduino nano returns to me in a textView.
JavaScript:
TextView textViewData=findViewById(R.id.TextViewData);
textViewData.setText(Reception);

but all my trying to include code with InputStream inputStream; do not work, the application crashes or freezes.
Could someone help me because I have no knowledge of Java I managed to do this with intuition and probably a lot of luck.

thanks in advance.


JavaScript:
package com.pegase.sapin;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask;
import android.widget.SeekBar;
import android.widget.ToggleButton;
import android.widget.EditText;
import android.widget.SeekBar.OnSeekBarChangeListener;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.UUID;
public class SapinControl extends AppCompatActivity {
    SeekBar Volume;
    SeekBar Ring1VitesseSeekBar;
    SeekBar Ring2VitesseSeekBar;
    SeekBar Ring3VitesseSeekBar;
    SeekBar Ring4VitesseSeekBar;
    SeekBar Ring1LumiereSeekBar;
    SeekBar Ring2LumiereSeekBar;
    SeekBar Ring3LumiereSeekBar;
    SeekBar Ring4LumiereSeekBar;
    EditText editText;
    Button sendButton;
    Button btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19, btn20, btn21, btn22, btn23, btn24, btnDis;
    ToggleButton simpleToggleButton1, simpleToggleButton2, simpleToggleButton3, simpleToggleButton4;
    String address = null;
    private ProgressDialog progress;
    BluetoothAdapter myBluetooth = null;
    BluetoothSocket btSocket = null;
    private boolean isBtConnected = false;
    //SPP UUID. Look for it
    static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent newint = getIntent();
        address = newint.getStringExtra(DeviceList.EXTRA_ADDRESS); //receive the address of the bluetooth device
        //view of the ledControl
        setContentView(R.layout.activity_sapin_control);
        //call the widgtes
        btn = (Button) findViewById(R.id.Button);
        btn2 = (Button) findViewById(R.id.Button2);
        btn3 = (Button) findViewById(R.id.Button3);
        btn4 = (Button) findViewById(R.id.Button4);
        btn5 = (Button) findViewById(R.id.Button5);
        btn6 = (Button) findViewById(R.id.Button6);
        btn7 = (Button) findViewById(R.id.Button7);
        btn8 = (Button) findViewById(R.id.Button8);
        btn9 = (Button) findViewById(R.id.Button9);
        btn10 = (Button) findViewById(R.id.Button10);
        btn11 = (Button) findViewById(R.id.Button11);
        btn12 = (Button) findViewById(R.id.Button12);
        btn13 = (Button) findViewById(R.id.Button13);
        btn14 = (Button) findViewById(R.id.Button14);
        btn15 = (Button) findViewById(R.id.Button15);
        btn16 = (Button) findViewById(R.id.Button16);
        btn17 = (Button) findViewById(R.id.Button17);
        btn18 = (Button) findViewById(R.id.Button18);
        btn19 = (Button) findViewById(R.id.Button19);
        btn20 = (Button) findViewById(R.id.Button20);
        btn21 = (Button) findViewById(R.id.Button21);
        btn22 = (Button) findViewById(R.id.Button22);
        btn23 = (Button) findViewById(R.id.Button23);
        btn24 = (Button) findViewById(R.id.Button24);
        btnDis = (Button) findViewById(R.id.Button30);
        // initiate toggle button
        //toggle button W   wheelcolor
        simpleToggleButton1 = (ToggleButton) findViewById(R.id.simpleToggleButton1);
        simpleToggleButton2 = (ToggleButton) findViewById(R.id.simpleToggleButton2);
        simpleToggleButton3 = (ToggleButton) findViewById(R.id.simpleToggleButton3);
        simpleToggleButton4 = (ToggleButton) findViewById(R.id.simpleToggleButton4);
        //Vitesse et lumiere
        Ring1VitesseSeekBar = (SeekBar) findViewById(R.id.Ring1SpeedSeekBar);
        Ring2VitesseSeekBar = (SeekBar) findViewById(R.id.Ring2SpeedSeekBar);
        Ring3VitesseSeekBar = (SeekBar) findViewById(R.id.Ring3SpeedSeekBar);
        Ring4VitesseSeekBar = (SeekBar) findViewById(R.id.Ring4SpeedSeekBar);
        Ring1LumiereSeekBar = (SeekBar) findViewById(R.id.Ring1BrightSeekBar);
        Ring2LumiereSeekBar = (SeekBar) findViewById(R.id.Ring2BrightSeekBar);
        Ring3LumiereSeekBar = (SeekBar) findViewById(R.id.Ring3BrightSeekBar);
        Ring4LumiereSeekBar = (SeekBar) findViewById(R.id.Ring4BrightSeekBar);
        //Volume MP3
        Volume = (SeekBar) findViewById(R.id.VolumeseekBar);
        new ConnectBT().execute(); //Call the class to connect
        //commands to be sent to bluetooth
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 1 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn10.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 2 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn11.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn12.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn13.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn14.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn15.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 3 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn16.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 1" + "\r\n";
                SendMessage(message);
            }
        });
        btn17.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 2" + "\r\n";
                SendMessage(message);
            }
        });
        btn18.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 3" + "\r\n";
                SendMessage(message);
            }
        });
        btn19.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 4" + "\r\n";
                SendMessage(message);
            }
        });
        btn20.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "P 4 5" + "\r\n";
                SendMessage(message);
            }
        });
        btn21.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "ON" + "\r\n";
                SendMessage(message);
            }
        });
        btn22.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "OFF" + "\r\n";
                SendMessage(message);
            }
        });
        btn23.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "D" + "\r\n";
                SendMessage(message);
            }
        });
        btn24.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = "E" + "\r\n";
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton1);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 1 " + simpleToggleButton1.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton2);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 2 " + simpleToggleButton2.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton3);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 3 " + simpleToggleButton3.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        sendButton = (Button) findViewById(R.id.simpleToggleButton4);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "W 4 " + simpleToggleButton4.getText() + "\r\n";
                //Toast.makeText(getApplicationContext(), status, Toast.LENGTH_SHORT).show(); // display the current state of toggle button's
                SendMessage(message);
            }
        });
        //Progression seekbar vitesse
        Ring1VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring1SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed1, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 1 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed1 = findViewById(R.id.TextviewSpeed1);
                textviewspeed1.setText(String.valueOf(progress));
            }
        });
        Ring2VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring2SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed2, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 2 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed2 = findViewById(R.id.TextviewSpeed2);
                textviewspeed2.setText(String.valueOf(progress));
            }
        });
        Ring3VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring3SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed3, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 3 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed3 = findViewById(R.id.TextviewSpeed3);
                textviewspeed3.setText(String.valueOf(progress));
            }
        });
        Ring4VitesseSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring4SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progressSpeed4, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = (int) ((-0.004 * (seekBar.getProgress() * seekBar.getProgress()) + (seekBar.getProgress() * 2.18)) - 45);
                progress = seekBar.getMax() - progress;
                String message = "S 4 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewspeed4 = findViewById(R.id.TextviewSpeed4);
                textviewspeed4.setText(String.valueOf(progress));
            }
        });
        //Progression seekbar Lumiere
        Ring1LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring1SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                //progress = progressLum1;
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 1 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum1 = findViewById(R.id.TextviewLum1);
                textviewlum1.setText(String.valueOf(progress));
            }
        });
        Ring2LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring2SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 2 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum2 = findViewById(R.id.TextviewLum2);
                textviewlum2.setText(String.valueOf(progress));
            }
        });
        Ring3LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring3SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 3 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum3 = findViewById(R.id.TextviewLum3);
                textviewlum3.setText(String.valueOf(progress));
            }
        });
        Ring4LumiereSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar Ring4SpeedSeekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                String message = "B 4 " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewlum4 = findViewById(R.id.TextviewLum4);
                textviewlum4.setText(String.valueOf(progress));
            }
        });
        //Volume seekbar
        Volume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            int progress = 0;
            // Notification that the user has started a touch gesture.
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            // When Progress value changed.
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
            // Notification that the user has finished a touch gesture
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress = seekBar.getProgress();
                progress = (int) ((9 * Math.log(progress)));
                String message = "V " + progress + "\r\n";
                SendMessage(message);
                //afficher la valeur a cote de la tirette
                TextView textviewvol = findViewById(R.id.TextviewVol);
                textviewvol.setText(String.valueOf(progress));
            }
        });
        btnDis.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Disconnect(); //close connection
            }
        });
    }
    private void Disconnect() {
        if (btSocket != null) //If the btSocket is busy
        {
            try {
                btSocket.close(); //close connection
            } catch (IOException e) {
                msg("Error");
            }
        }
        finish(); //return to the first layout
    }
    private void SendMessage(String key) {
        if (btSocket != null) {
            try {
                btSocket.getOutputStream().write(key.getBytes());
            } catch (IOException e) {
                msg("Error");
            }
        }
    }
    // fast way to call Toast
    private void msg(String s) {
        Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
    }
    private class ConnectBT extends AsyncTask<Void, Void, Void>  // UI thread
    {
        private boolean ConnectSuccess = true; //if it's here, it's almost connected
        @Override
        protected void onPreExecute() {
            progress = ProgressDialog.show(SapinControl.this, "Connecting...", "Please wait!!!");  //show a progress dialog
        }
        @Override
        protected Void doInBackground(Void... devices) //while the progress dialog is shown, the connection is done in background
        {
            try {
                if (btSocket == null || !isBtConnected) {
                    myBluetooth = BluetoothAdapter.getDefaultAdapter();//get the mobile bluetooth device
                    BluetoothDevice dispositivo = myBluetooth.getRemoteDevice(address);//connects to the device's address and checks if it's available
                    btSocket = dispositivo.createInsecureRfcommSocketToServiceRecord(myUUID);//create a RFCOMM (SPP) connection
                    BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
                    btSocket.connect();//start connection
                }
            } catch (IOException e) {
                ConnectSuccess = false;//if the try failed, you can check the exception here
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) //after the doInBackground, it checks if everything went fine
        {
            super.onPostExecute(result);
            if (!ConnectSuccess) {
                msg("Connection Failed. Is it a SPP Bluetooth? Try again.");
                finish();
            } else {
                msg("Connected.");
                isBtConnected = true;
            }
            progress.dismiss();
        }
    }
}

Filter

Back
Top Bottom