diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 412ab32..da0dfc6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,21 +34,18 @@
+
+
+
-
-
-
-
-
-
-
diff --git a/app/src/main/java/com/flywithu/carnav/AlarmReceiver.java b/app/src/main/java/com/flywithu/carnav/AlarmReceiver.java
new file mode 100644
index 0000000..bd91f22
--- /dev/null
+++ b/app/src/main/java/com/flywithu/carnav/AlarmReceiver.java
@@ -0,0 +1,21 @@
+package com.flywithu.carnav;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+
+public class AlarmReceiver extends BroadcastReceiver{
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ Intent in = new Intent(context, RestartService.class);
+ context.startForegroundService(in);
+ } else {
+ Intent in = new Intent(context, RealService.class);
+ context.startService(in);
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/flywithu/carnav/MainActivity.java b/app/src/main/java/com/flywithu/carnav/MainActivity.java
index 14a9ec1..a13b099 100644
--- a/app/src/main/java/com/flywithu/carnav/MainActivity.java
+++ b/app/src/main/java/com/flywithu/carnav/MainActivity.java
@@ -1,5 +1,7 @@
package com.flywithu.carnav;
+import androidx.appcompat.app.AppCompatActivity;
+
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -8,35 +10,26 @@ import android.content.IntentFilter;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
-import android.widget.TextView;
+import android.util.Log;
import android.widget.Toast;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.core.app.NotificationManagerCompat;
-
import com.hoho.android.usbserial.driver.UsbSerialDriver;
-import com.hoho.android.usbserial.driver.UsbSerialPort;
import com.hoho.android.usbserial.driver.UsbSerialProber;
import java.util.List;
-import java.util.Set;
public class MainActivity extends AppCompatActivity {
- public static final String SERVICECMD = "com.android.music.musicservicecommand";
- public static final String TAG = "carnav";
- static final String ACTION_USB_PERMISSION = "com.flywithu.carnav.USB_PERMISSION";
private Intent serviceIntent;
+ public static final String SERVICECMD = "com.android.music.musicservicecommand";
+ public static final String TAG="carnav";
+ static final String ACTION_USB_PERMISSION = "com.flywithu.carnav.USB_PERMISSION";
private BroadcastReceiver usbReceiver = null;
-
- private void goService() {
-
-
+ private void goService()
+ {
if (RealService.serviceIntent == null) {
-
serviceIntent = new Intent(this, RealService.class);
startService(serviceIntent);
- Toast.makeText(getApplicationContext(), "new start", Toast.LENGTH_LONG).show();
} else {
serviceIntent = RealService.serviceIntent;//getInstance().getApplication();
Toast.makeText(getApplicationContext(), "already", Toast.LENGTH_LONG).show();
@@ -44,51 +37,23 @@ public class MainActivity extends AppCompatActivity {
}
-
- private boolean isNotiPermissionAllowed() {
- Set notiListenerSet = NotificationManagerCompat.getEnabledListenerPackages(this);
- String myPackageName = getPackageName();
-
- for (String packageName : notiListenerSet) {
- if (packageName == null) {
- continue;
- }
- if (packageName.equals(myPackageName)) {
- return true;
- }
- }
-
- return false;
- }
-
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- boolean isPermissionAllowed = isNotiPermissionAllowed();
-
- if (!isPermissionAllowed) {
- Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
- startActivity(intent);
- } else {
- ((TextView) findViewById(R.id.textViewNotificationStatus)).setText((isNotiPermissionAllowed()) ? "OK" : "NO");
- }
-
-
-
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
if (!availableDrivers.isEmpty()) {
- Toast.makeText(getApplicationContext(), "USB Exist", Toast.LENGTH_LONG).show();
+ Toast.makeText(getApplicationContext(),"USB Exist",Toast.LENGTH_LONG).show();
UsbSerialDriver driver = null;
UsbDeviceConnection connection = null;
try {
driver = availableDrivers.get(0);
- if (!manager.hasPermission(driver.getDevice())) {
+ if(!manager.hasPermission(driver.getDevice()))
+ {
Toast.makeText(getApplicationContext(), "NO Permission", Toast.LENGTH_LONG).show();
//Request USB HOST
@@ -100,53 +65,66 @@ public class MainActivity extends AppCompatActivity {
new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_ONE_SHOT);
//
- usbReceiver = new BroadcastReceiver() {
+ usbReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (ACTION_USB_PERMISSION.equals(action)) {
+ if(ACTION_USB_PERMISSION.equals(action))
+ {
- if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, true)) {
- Toast.makeText(getApplicationContext(), "Pemission Granted", Toast.LENGTH_LONG).show();
+ if(intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED,true))
+ {
+ Toast.makeText(getApplicationContext(), "Pemission Granted", Toast.LENGTH_LONG);
goService();
- } else {
- Toast.makeText(getApplicationContext(), "Pemission Denied", Toast.LENGTH_LONG).show();
+ }
+ else
+ {
+ Toast.makeText(getApplicationContext(), "Pemission Denied", Toast.LENGTH_LONG);
}
}
}
};
+
+
registerReceiver(usbReceiver, new IntentFilter(ACTION_USB_PERMISSION));
manager.requestPermission(driver.getDevice(), mPermissionIntent);
}
- } else {
- Toast.makeText(getApplicationContext(), "Has Permission", Toast.LENGTH_LONG).show();
+
+ }
+ else {
connection = manager.openDevice(driver.getDevice());
if (connection == null) {
- Toast.makeText(getApplicationContext(), "Unknown error", Toast.LENGTH_LONG).show();
+ Toast.makeText(getApplicationContext(), "Unknown error", Toast.LENGTH_LONG);
} else {
- UsbSerialPort sPort = null;
- sPort = driver.getPorts().get(0);
- sPort.open(connection);
- Toast.makeText(getApplicationContext(), "Serial Count:" + driver.getPorts().size(), Toast.LENGTH_LONG).show();
-
- sPort.close();
goService();
}
}
- } catch (Exception e) {
- Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
- } else {
- Toast.makeText(getApplicationContext(), "NO USB", Toast.LENGTH_LONG).show();
+ catch(Exception e)
+ {
+ e.toString();
+ }
+
+
}
+ else
+ {
+ Toast.makeText(getApplicationContext(),"NO USB",Toast.LENGTH_LONG).show();
+ }
+
+
+
+
+
}
+
@Override
protected void onDestroy() {
super.onDestroy();
@@ -154,9 +132,9 @@ public class MainActivity extends AppCompatActivity {
stopService(serviceIntent);
serviceIntent = null;
}
- if (usbReceiver != null) {
+ if(usbReceiver!=null)
+ {
unregisterReceiver(usbReceiver);
- }
- }
+ }}
}
diff --git a/app/src/main/java/com/flywithu/carnav/RealService.java b/app/src/main/java/com/flywithu/carnav/RealService.java
index 5e9e7ff..894d9f8 100644
--- a/app/src/main/java/com/flywithu/carnav/RealService.java
+++ b/app/src/main/java/com/flywithu/carnav/RealService.java
@@ -16,6 +16,7 @@ import android.hardware.usb.UsbManager;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
+import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -41,6 +42,7 @@ public class RealService extends Service {
private static UsbSerialPort sPort = null;
+
public RealService() {
}
@@ -102,14 +104,16 @@ feff0041c9c0c5b4bc18005a
connection = manager.openDevice(driver.getDevice());
if (connection == null) {
showToast(getApplication(), "No connection");
- // You probably need to call UsbManager.requestPermission(driver.getDevice(), ..)
- return START_NOT_STICKY;
+ return START_NOT_STICKY;
+
}
+ sPort = driver.getPorts().get(0);
} catch (Exception e) {
showToast(getApplication(), e.toString());
}
try {
+
sPort.open(connection);
sPort.setParameters(19200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
@@ -188,7 +192,10 @@ feff0041c9c0c5b4bc18005a
iF.addAction("com.rdio.android.metachanged");
iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
iF.addAction("com.andrew.apollo.metachanged");
-
+ iF.addAction("com.android.music.metachanged");
+ iF.addAction("com.android.music.playstatechanged");
+ iF.addAction("com.android.music.playbackcomplete");
+ iF.addAction("com.android.music.queuechanged");
registerReceiver(mReceiver, iF);
return START_NOT_STICKY;
}
@@ -205,7 +212,7 @@ feff0041c9c0c5b4bc18005a
serviceIntent = null;
setAlarmTimer();
Thread.currentThread().interrupt();
-
+ unregisterReceiver(mReceiver);
// if (mainThread != null) {
// mainThread.interrupt();
// mainThread = null;
@@ -241,7 +248,7 @@ feff0041c9c0c5b4bc18005a
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.add(Calendar.SECOND, 1);
- Intent intent = new Intent(this, AlarmRecever.class);
+ Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
@@ -260,13 +267,46 @@ feff0041c9c0c5b4bc18005a
} catch (Exception e) {
e.toString();
}
+
+ Bundle bundle = intent.getExtras();
+ if (bundle != null) {
+ for (String key : bundle.keySet()) {
+ Object value = bundle.get(key);
+ Log.d("MUSIC", String.format("%s %s (%s)", key,
+ value.toString(), value.getClass().getName()));
+ }
+ }
+
+ /*
+ 2019-09-07 11:47:50.244 7675-7675/com.flywithu.carnav D/MUSIC: artist 알 수 없음 (java.lang.String)
+2019-09-07 11:47:50.244 7675-7675/com.flywithu.carnav D/MUSIC: albumId 11 (java.lang.Long)
+2019-09-07 11:47:50.244 7675-7675/com.flywithu.carnav D/MUSIC: playing true (java.lang.Boolean)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: id 50 (java.lang.String)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: album Download (java.lang.String)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: track I understand (2) (java.lang.String)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: vi_direction 2 (java.lang.Long)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: listPosition 2 (java.lang.Long)
+2019-09-07 11:47:50.245 7675-7675/com.flywithu.carnav D/MUSIC: mediaCount 2 (java.lang.Long)
+
+
+ 2019-09-07 11:50:45.186 7675-7675/com.flywithu.carnav D/MUSIC: duration 60000 (java.lang.Long)
+2019-09-07 11:50:45.186 7675-7675/com.flywithu.carnav D/MUSIC: playstate true (java.lang.Boolean)
+2019-09-07 11:50:45.187 7675-7675/com.flywithu.carnav D/MUSIC: artist 거미 (java.lang.String)
+2019-09-07 11:50:45.187 7675-7675/com.flywithu.carnav D/MUSIC: albumId 10314289 (java.lang.String)
+2019-09-07 11:50:45.188 7675-7675/com.flywithu.carnav D/MUSIC: playing true (java.lang.Boolean)
+2019-09-07 11:50:45.188 7675-7675/com.flywithu.carnav D/MUSIC: id 1 (java.lang.Long)
+2019-09-07 11:50:45.189 7675-7675/com.flywithu.carnav D/MUSIC: album 호텔 델루나 OST Part.7 (java.lang.String)
+2019-09-07 11:50:45.189 7675-7675/com.flywithu.carnav D/MUSIC: track 기억해줘요 내 모든 날과 그때를 - 거미 (java.lang.String)
+2019-09-07 11:50:45.189 7675-7675/com.flywithu.carnav V/tag: com.android.music.metachanged / null
+2019-09-07 11:50:45.189 7675-7675/com.flywithu.carnav V/MUSIC: 거미:호텔 델루나 OST Part.7:기억해줘요 내 모든 날과 그때를 - 거미
+ */
String action = intent.getAction();
String cmd = intent.getStringExtra("command");
- Log.v("tag ", action + " / " + cmd);
+ Log.v("MUSIC ", action + " / " + cmd);
String artist = intent.getStringExtra("artist");
String album = intent.getStringExtra("album");
String track = intent.getStringExtra("track");
- Log.v("tag", artist + ":" + album + ":" + track);
+ Log.v("MUSIC", artist + ":" + album + ":" + track);
// Toast.makeText(MainActivity.this, track, Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/flywithu/carnav/RebootReceiver.java b/app/src/main/java/com/flywithu/carnav/RebootReceiver.java
index e4749e8..74dc577 100644
--- a/app/src/main/java/com/flywithu/carnav/RebootReceiver.java
+++ b/app/src/main/java/com/flywithu/carnav/RebootReceiver.java
@@ -8,9 +8,8 @@ import android.os.Build;
public class RebootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- Intent in = new Intent(context, RealService.class);
+ Intent in = new Intent(context, RestartService.class);
context.startForegroundService(in);
} else {
Intent in = new Intent(context, RealService.class);