Compare commits
1 Commits
53a6431453
...
f111bd45b4
Author | SHA1 | Date | |
---|---|---|---|
f111bd45b4 |
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,7 +1,5 @@
|
|||||||
package com.flywithu.carnav;
|
package com.flywithu.carnav;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@ -10,9 +8,10 @@ import android.content.IntentFilter;
|
|||||||
import android.hardware.usb.UsbDeviceConnection;
|
import android.hardware.usb.UsbDeviceConnection;
|
||||||
import android.hardware.usb.UsbManager;
|
import android.hardware.usb.UsbManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialPort;
|
import com.hoho.android.usbserial.driver.UsbSerialPort;
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialProber;
|
import com.hoho.android.usbserial.driver.UsbSerialProber;
|
||||||
@ -21,15 +20,13 @@ import java.util.List;
|
|||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private Intent serviceIntent;
|
|
||||||
public static final String SERVICECMD = "com.android.music.musicservicecommand";
|
public static final String SERVICECMD = "com.android.music.musicservicecommand";
|
||||||
public static final String TAG="carnav";
|
public static final String TAG = "carnav";
|
||||||
static final String ACTION_USB_PERMISSION = "com.flywithu.carnav.USB_PERMISSION";
|
static final String ACTION_USB_PERMISSION = "com.flywithu.carnav.USB_PERMISSION";
|
||||||
|
private Intent serviceIntent;
|
||||||
private BroadcastReceiver usbReceiver = null;
|
private BroadcastReceiver usbReceiver = null;
|
||||||
|
|
||||||
private void goService()
|
private void goService() {
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (RealService.serviceIntent == null) {
|
if (RealService.serviceIntent == null) {
|
||||||
@ -53,14 +50,13 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
||||||
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
|
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
|
||||||
if (!availableDrivers.isEmpty()) {
|
if (!availableDrivers.isEmpty()) {
|
||||||
Toast.makeText(getApplicationContext(),"USB Exist",Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "USB Exist", Toast.LENGTH_LONG).show();
|
||||||
|
|
||||||
UsbSerialDriver driver = null;
|
UsbSerialDriver driver = null;
|
||||||
UsbDeviceConnection connection = null;
|
UsbDeviceConnection connection = null;
|
||||||
try {
|
try {
|
||||||
driver = availableDrivers.get(0);
|
driver = availableDrivers.get(0);
|
||||||
if(!manager.hasPermission(driver.getDevice()))
|
if (!manager.hasPermission(driver.getDevice())) {
|
||||||
{
|
|
||||||
|
|
||||||
Toast.makeText(getApplicationContext(), "NO Permission", Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "NO Permission", Toast.LENGTH_LONG).show();
|
||||||
//Request USB HOST
|
//Request USB HOST
|
||||||
@ -72,20 +68,16 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_ONE_SHOT);
|
new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_ONE_SHOT);
|
||||||
//
|
//
|
||||||
|
|
||||||
usbReceiver=new BroadcastReceiver() {
|
usbReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if(ACTION_USB_PERMISSION.equals(action))
|
if (ACTION_USB_PERMISSION.equals(action)) {
|
||||||
{
|
|
||||||
|
|
||||||
if(intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED,true))
|
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, true)) {
|
||||||
{
|
|
||||||
Toast.makeText(getApplicationContext(), "Pemission Granted", Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "Pemission Granted", Toast.LENGTH_LONG).show();
|
||||||
goService();
|
goService();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
Toast.makeText(getApplicationContext(), "Pemission Denied", Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "Pemission Denied", Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,26 +85,22 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
registerReceiver(usbReceiver, new IntentFilter(ACTION_USB_PERMISSION));
|
registerReceiver(usbReceiver, new IntentFilter(ACTION_USB_PERMISSION));
|
||||||
manager.requestPermission(driver.getDevice(), mPermissionIntent);
|
manager.requestPermission(driver.getDevice(), mPermissionIntent);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else {
|
|
||||||
Toast.makeText(getApplicationContext(), "Has Permission", Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "Has Permission", Toast.LENGTH_LONG).show();
|
||||||
connection = manager.openDevice(driver.getDevice());
|
connection = manager.openDevice(driver.getDevice());
|
||||||
if (connection == null) {
|
if (connection == null) {
|
||||||
Toast.makeText(getApplicationContext(), "Unknown error", Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "Unknown error", Toast.LENGTH_LONG).show();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
UsbSerialPort sPort = null;
|
UsbSerialPort sPort = null;
|
||||||
sPort = driver.getPorts().get(0);
|
sPort = driver.getPorts().get(0);
|
||||||
sPort.open(connection);
|
sPort.open(connection);
|
||||||
Toast.makeText(getApplicationContext(),"Serial Count:"+String.valueOf(driver.getPorts().size()),Toast.LENGTH_LONG).show();
|
Toast.makeText(getApplicationContext(), "Serial Count:" + String.valueOf(driver.getPorts().size()), Toast.LENGTH_LONG).show();
|
||||||
|
|
||||||
sPort.close();
|
sPort.close();
|
||||||
sPort = null;
|
sPort = null;
|
||||||
|
|
||||||
@ -120,27 +108,15 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
goService();
|
goService();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
} else {
|
||||||
{
|
Toast.makeText(getApplicationContext(), "NO USB", Toast.LENGTH_LONG).show();
|
||||||
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Toast.makeText(getApplicationContext(),"NO USB",Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
@ -148,9 +124,9 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
stopService(serviceIntent);
|
stopService(serviceIntent);
|
||||||
serviceIntent = null;
|
serviceIntent = null;
|
||||||
}
|
}
|
||||||
if(usbReceiver!=null)
|
if (usbReceiver != null) {
|
||||||
{
|
|
||||||
unregisterReceiver(usbReceiver);
|
unregisterReceiver(usbReceiver);
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
74
app/src/main/java/com/flywithu/carnav/MusicTitle.java
Normal file
74
app/src/main/java/com/flywithu/carnav/MusicTitle.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package com.flywithu.carnav;
|
||||||
|
|
||||||
|
public class MusicTitle {
|
||||||
|
|
||||||
|
private String artist = null;
|
||||||
|
private String album = null;
|
||||||
|
private String track = null;
|
||||||
|
private boolean isRunning = false;
|
||||||
|
private int total = 0;
|
||||||
|
private int position = 0;
|
||||||
|
|
||||||
|
|
||||||
|
public String getAlbum() {
|
||||||
|
if(album == null)
|
||||||
|
{
|
||||||
|
album = "getAlbum";
|
||||||
|
}
|
||||||
|
return album;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlbum(String album) {
|
||||||
|
this.album = album;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTrack() {
|
||||||
|
if(track == null)
|
||||||
|
{
|
||||||
|
track = "getTrack";
|
||||||
|
}
|
||||||
|
return track;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTrack(String track) {
|
||||||
|
this.track = track;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRunning() {
|
||||||
|
return isRunning;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRunning(boolean running) {
|
||||||
|
isRunning = running;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTotal() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public void setTotal(int total) {
|
||||||
|
// this.total = total;
|
||||||
|
//}
|
||||||
|
|
||||||
|
public int getPosition() {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPosition(int position) {
|
||||||
|
this.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public String getArtist() {
|
||||||
|
if(artist == null)
|
||||||
|
{
|
||||||
|
artist = "getArtist";
|
||||||
|
}
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArtist(String artist) {
|
||||||
|
this.artist = artist;
|
||||||
|
}
|
||||||
|
}
|
@ -2,9 +2,6 @@ package com.flywithu.carnav;
|
|||||||
|
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.app.Notification;
|
|
||||||
import android.app.NotificationChannel;
|
|
||||||
import android.app.NotificationManager;
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
@ -13,18 +10,12 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.hardware.usb.UsbDeviceConnection;
|
import android.hardware.usb.UsbDeviceConnection;
|
||||||
import android.hardware.usb.UsbManager;
|
import android.hardware.usb.UsbManager;
|
||||||
import android.media.RingtoneManager;
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.core.app.NotificationCompat;
|
|
||||||
|
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialPort;
|
import com.hoho.android.usbserial.driver.UsbSerialPort;
|
||||||
import com.hoho.android.usbserial.driver.UsbSerialProber;
|
import com.hoho.android.usbserial.driver.UsbSerialProber;
|
||||||
@ -42,114 +33,100 @@ public class RealService extends Service {
|
|||||||
public static Intent serviceIntent = null;
|
public static Intent serviceIntent = null;
|
||||||
|
|
||||||
private static UsbSerialPort sPort = null;
|
private static UsbSerialPort sPort = null;
|
||||||
|
private MusicTitle currentSong = new MusicTitle();
|
||||||
|
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
|
||||||
|
|
||||||
|
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()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String action = intent.getAction();
|
||||||
|
String cmd = intent.getStringExtra("command");
|
||||||
|
Log.v("MUSIC ", action + " / " + cmd);
|
||||||
|
String artist = intent.getStringExtra("artist");
|
||||||
|
String album = intent.getStringExtra("album");
|
||||||
|
String track = intent.getStringExtra("track");
|
||||||
|
Long myPosition = intent.getLongExtra("id", 1);
|
||||||
|
Log.v("MUSIC", artist + ":" + album + ":" + track);
|
||||||
|
boolean isRunning = intent.getBooleanExtra("playstate", false) | intent.getBooleanExtra("playing", false);
|
||||||
|
|
||||||
|
currentSong.setRunning(isRunning);
|
||||||
|
|
||||||
|
if (isRunning == true) {
|
||||||
|
currentSong.setAlbum(album);
|
||||||
|
currentSong.setArtist(artist);
|
||||||
|
currentSong.setTrack(track);
|
||||||
|
currentSong.setPosition(myPosition.intValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public RealService() {
|
public RealService() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendSerial(String str) {
|
private void sendSerial(String str) {
|
||||||
|
|
||||||
sendSerial(str,Charset.forName("UTF-8"));
|
sendSerial(str, Charset.forName("UTF-8"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void sendSerial(String str,Charset enc) {
|
private synchronized void sendSerial(String str, Charset enc) {
|
||||||
// byte t1[] = new byte[]{0x55, 0x34, 0x50, 0x4C, 0x30, 0x33, 0x7C, 0x31, 0x2C, 0x31, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30};
|
|
||||||
// byte t2[] = new byte[]{0x55, 0x34, 0x50, 0x4C, 0x31, 0x33, 0x7C, 0x41, (byte) 0xec, (byte) 0xa7, (byte) 0x80, (byte) 0xec, (byte) 0x96, (byte) 0xb4, (byte) 0xeb, (byte) 0xb0, (byte) 0x98, 0x5a, 0x7c};
|
|
||||||
// byte t3[] = new byte[]{0x55, 0x34, 0x50, 0x4C, 0x32, 0x33, 0x7C, (byte) 0xfe, (byte) 0xff, 0x00, 0x41, (byte) 0xc9, (byte) 0xc0, (byte) 0xc5, (byte) 0xb4, (byte) 0xbc, 0x18, 0x00, 0x5a, 0x7c};
|
|
||||||
// byte t4[] = new byte[]{0x55, 0x34, 0x50, 0x4C, 0x33, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, (byte) 0xc9, (byte) 0xc0, 0x00, 0x00, (byte) 0xc5, (byte) 0xb4, 0x00, 0x00, (byte) 0xbc, 0x18, 0x00, 0x00, 0x00, 0x5a, 0x7c};
|
|
||||||
/*
|
|
||||||
41eca780ec96b4ebb0985a
|
|
||||||
feff0041c9c0c5b4bc18005a
|
|
||||||
000000410000c9c00000c5b40000bc180000005a
|
|
||||||
*/
|
|
||||||
if (sPort != null) {
|
if (sPort != null) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
int len = sPort.write(getStringToByte(str, enc), 3000);
|
||||||
sPort.write(getStringToByte(str,enc), 3000);
|
sPort.write(new byte[]{0xd}, 3000);
|
||||||
// Toast.makeText(getApplicationContext(),String.valueOf(result),Toast.LENGTH_SHORT).show();
|
Log.d("TAG", str);
|
||||||
sPort.write(new byte[]{0xd}, 3000);
|
|
||||||
// Toast.makeText(getApplicationContext(),String.valueOf(result2),Toast.LENGTH_SHORT).show();
|
|
||||||
Log.d("TAG",str);
|
|
||||||
// showToast(getApplication(), "SEND:"+str);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// sPort.write(t1, 3000);
|
|
||||||
// sPort.write(new byte[]{0xd}, 3000);
|
|
||||||
//
|
|
||||||
// sPort.write(t2, 3000);
|
|
||||||
// sPort.write(new byte[]{0xd}, 3000);
|
|
||||||
//
|
|
||||||
// sPort.write(t3, 3000);
|
|
||||||
// sPort.write(new byte[]{0xd}, 3000);
|
|
||||||
//
|
|
||||||
// sPort.write(t4, 3000);
|
|
||||||
// sPort.write(new byte[]{0xd}, 3000);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
showToast(getApplication(),"Error:"+e.toString());
|
showToast(getApplication(), "Error:" + e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else
|
showToast(getApplication(), "SERIAL NULL");
|
||||||
{
|
|
||||||
showToast(getApplication(),"SERIAL NULL");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected byte[] getStringToByte(String str, Charset enc) {
|
||||||
|
ByteBuffer buf = ByteBuffer.allocate(150);
|
||||||
|
|
||||||
protected byte[] getStringToByte(String str,Charset enc)
|
|
||||||
{
|
|
||||||
ByteBuffer buf = ByteBuffer.allocate(300);;
|
|
||||||
/*
|
|
||||||
sendSerial("U4PL13|soar|");
|
|
||||||
sendSerial("U4PL23|헤어지자 (Prod. 정키)|");
|
|
||||||
sendSerial("U4PL33|휘인 (Whee In)|");
|
|
||||||
*/
|
|
||||||
String[] arrStr = null;
|
String[] arrStr = null;
|
||||||
if(str.startsWith("U4PL13")||str.startsWith("U4PL23")||str.startsWith("U4PL33"))
|
if (str.startsWith("U4PL13") || str.startsWith("U4PL23") || str.startsWith("U4PL33")) {
|
||||||
{
|
|
||||||
arrStr = str.split("\\|");
|
arrStr = str.split("\\|");
|
||||||
// System.out.println(arrStr[1]);
|
|
||||||
// System.out.println(arrStr[0]);
|
|
||||||
buf.put(arrStr[0].getBytes(Charset.forName("UTF-8")));
|
buf.put(arrStr[0].getBytes(Charset.forName("UTF-8")));
|
||||||
buf.put(new byte[]{0x7c});
|
buf.put(new byte[]{0x7c});
|
||||||
buf.put(arrStr[1].getBytes(enc));
|
buf.put(arrStr[1].getBytes(enc));
|
||||||
// Log.d("TAG", String.valueOf( buf.position()));
|
|
||||||
buf.put(new byte[]{0x7c});
|
buf.put(new byte[]{0x7c});
|
||||||
// System.out.println(new String(buf.array()));
|
|
||||||
// Log.d("TAG", String.valueOf( buf.position()));
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
|
} else {
|
||||||
buf.put(str.getBytes(Charset.forName("UTF-8")));
|
buf.put(str.getBytes(Charset.forName("UTF-8")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte[] bytes = new byte[buf.position()];
|
byte[] bytes = new byte[buf.position()];
|
||||||
buf.get(bytes,0,buf.position());
|
buf.flip();
|
||||||
|
buf.get(bytes);
|
||||||
|
|
||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||||
serviceIntent = intent;
|
serviceIntent = intent;
|
||||||
showToast(getApplication(), "Start Service");
|
showToast(getApplication(), "Start Service");
|
||||||
|
|
||||||
//
|
|
||||||
// mainThread = new Thread(new Runnable() {
|
|
||||||
// @Override
|
|
||||||
// public void run() {
|
|
||||||
|
|
||||||
|
|
||||||
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
||||||
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
|
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
|
||||||
if (availableDrivers.isEmpty()) {
|
if (availableDrivers.isEmpty()) {
|
||||||
@ -157,7 +134,6 @@ feff0041c9c0c5b4bc18005a
|
|||||||
return START_NOT_STICKY;
|
return START_NOT_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open a connection to the first available driver.
|
|
||||||
UsbSerialDriver driver = null;
|
UsbSerialDriver driver = null;
|
||||||
UsbDeviceConnection connection = null;
|
UsbDeviceConnection connection = null;
|
||||||
try {
|
try {
|
||||||
@ -171,7 +147,7 @@ feff0041c9c0c5b4bc18005a
|
|||||||
}
|
}
|
||||||
sPort = driver.getPorts().get(0);
|
sPort = driver.getPorts().get(0);
|
||||||
|
|
||||||
// showToast(getApplication(), driver.getDevice().getProductName());
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
showToast(getApplication(), e.toString());
|
showToast(getApplication(), e.toString());
|
||||||
return START_NOT_STICKY;
|
return START_NOT_STICKY;
|
||||||
@ -193,40 +169,18 @@ feff0041c9c0c5b4bc18005a
|
|||||||
sPort = null;
|
sPort = null;
|
||||||
return START_NOT_STICKY;
|
return START_NOT_STICKY;
|
||||||
}
|
}
|
||||||
//set the time
|
|
||||||
//TMST001801140907
|
|
||||||
//TMST00YYDDDD0907
|
|
||||||
//TMST001205010916
|
|
||||||
SimpleDateFormat format1 = new SimpleDateFormat("00yyMMddHHmm");
|
SimpleDateFormat format1 = new SimpleDateFormat("00yyMMddHHmm");
|
||||||
// String f = format1.format(System.currentTimeMillis());
|
// String f = format1.format(System.currentTimeMillis());
|
||||||
String currentInfo = format1.format(new Date());
|
String currentInfo = format1.format(new Date());
|
||||||
String currentTime = String.format("TMST%s", currentInfo);
|
String currentTime = String.format("TMST%s", currentInfo);
|
||||||
sendSerial(currentTime);
|
sendSerial(currentTime);
|
||||||
sendSerial("U4EN00");
|
sendSerial("U4EN00");
|
||||||
sendSerial("*R|R1R2R3D1D2A1A3U4|");
|
|
||||||
sendSerial("U4PL03|5,3|0001010000000");
|
|
||||||
sendSerial("U4PL13|8소아|",Charset.forName("UTF-8"));
|
|
||||||
sendSerial("U4PL23|16헤어지자 (Prod. 정키)|", Charset.forName("UTF-16"));
|
|
||||||
sendSerial("U4PL33|32휘인 (Whee In)|",Charset.forName("UTF-32"));
|
|
||||||
|
|
||||||
|
|
||||||
// sendSerial("U4DI00");
|
|
||||||
// sendSerial("*R|R1R2R3D1D2A1A3|");
|
|
||||||
// U4EN00
|
|
||||||
// *R|R1R2R3D1D2A1A3U4|
|
|
||||||
// A1PL00
|
|
||||||
|
|
||||||
|
|
||||||
//U4PL03|1,1|0001010000000 U4PL13|soar| U4PL23|헤어지자 (Prod. 정키)| U4PL33|휘인 (Whee In)|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IntentFilter iF = new IntentFilter();
|
IntentFilter iF = new IntentFilter();
|
||||||
iF.addAction("com.android.music.metachanged");
|
iF.addAction("com.android.music.metachanged");
|
||||||
|
|
||||||
iF.addAction("com.htc.music.metachanged");
|
iF.addAction("com.htc.music.metachanged");
|
||||||
|
|
||||||
iF.addAction("fm.last.android.metachanged");
|
iF.addAction("fm.last.android.metachanged");
|
||||||
iF.addAction("com.sec.android.app.music.metachanged");
|
iF.addAction("com.sec.android.app.music.metachanged");
|
||||||
iF.addAction("com.nullsoft.winamp.metachanged");
|
iF.addAction("com.nullsoft.winamp.metachanged");
|
||||||
@ -241,36 +195,44 @@ feff0041c9c0c5b4bc18005a
|
|||||||
iF.addAction("com.android.music.playstatechanged");
|
iF.addAction("com.android.music.playstatechanged");
|
||||||
iF.addAction("com.android.music.playbackcomplete");
|
iF.addAction("com.android.music.playbackcomplete");
|
||||||
iF.addAction("com.android.music.queuechanged");
|
iF.addAction("com.android.music.queuechanged");
|
||||||
|
|
||||||
|
|
||||||
registerReceiver(mReceiver, iF);
|
registerReceiver(mReceiver, iF);
|
||||||
|
|
||||||
|
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run() {
|
||||||
{
|
|
||||||
|
|
||||||
boolean myRun = true;
|
boolean myRun = true;
|
||||||
while (myRun)
|
int stopCount = 0;
|
||||||
{
|
while (myRun) {
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
|
|
||||||
Thread.sleep(5000);
|
Thread.sleep(5000);
|
||||||
SimpleDateFormat format1 = new SimpleDateFormat("00yyMMddHHmm");
|
SimpleDateFormat format1 = new SimpleDateFormat("00yyMMddHHmm");
|
||||||
// String f = format1.format(System.currentTimeMillis());
|
|
||||||
String currentInfo = format1.format(new Date());
|
String currentInfo = format1.format(new Date());
|
||||||
String currentTime = String.format("TMST%s", currentInfo);
|
String currentTime = String.format("TMST%s", currentInfo);
|
||||||
sendSerial(currentTime);
|
sendSerial(currentTime);
|
||||||
|
|
||||||
sendSerial("U4EN00");
|
if (currentSong.isRunning()) {
|
||||||
sendSerial("*R|R1R2R3D1D2A1A3U4|");
|
stopCount = 0;
|
||||||
sendSerial("U4PL03|5,3|0001010000000");
|
sendSerial("U4EN00");
|
||||||
sendSerial("U4PL13|8소아|",Charset.forName("UTF-8"));
|
sendSerial("U4OP00");
|
||||||
sendSerial("U4PL23|16헤어지자 (Prod. 정키)|", Charset.forName("UTF-16"));
|
sendSerial("U4PL03|" + currentSong.getTotal() + "," + currentSong.getPosition() + "|0001010000000");
|
||||||
sendSerial("U4PL33|32휘인 (Whee In)|",Charset.forName("UTF-32"));
|
sendSerial("U4PL13|" + currentSong.getAlbum() + "|", Charset.forName("UTF-8"));
|
||||||
|
sendSerial("U4PL23|" + currentSong.getTrack() + "|", Charset.forName("UTF-8"));
|
||||||
|
sendSerial("U4PL33|" + currentSong.getArtist() + "|", Charset.forName("UTF-8"));
|
||||||
|
} else {
|
||||||
|
if (stopCount > 5) {
|
||||||
|
sendSerial("U4DI00");
|
||||||
|
}
|
||||||
|
stopCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
} catch (InterruptedException e) {
|
||||||
catch(InterruptedException e)
|
|
||||||
{
|
|
||||||
myRun = false;
|
myRun = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -281,49 +243,6 @@ feff0041c9c0c5b4bc18005a
|
|||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
|
|
||||||
// new Thread(new Runnable() {
|
|
||||||
// @Override
|
|
||||||
// public void run()
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
// boolean myRun = true;
|
|
||||||
// showToast(getApplication(), "READ start");
|
|
||||||
// while (myRun)
|
|
||||||
// {
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// byte[] mArray = new byte[100];
|
|
||||||
// int len = sPort.read(mArray,1000);
|
|
||||||
// if(len >0)
|
|
||||||
// {
|
|
||||||
// String result = new String (mArray,0,len,Charset.defaultCharset());
|
|
||||||
// showToast(getApplication(), "READ:"+result);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// showToast(getApplication(), "READ FAIL");
|
|
||||||
// Log.d("FAIL","FAIL");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// catch(Exception e)
|
|
||||||
// {
|
|
||||||
// myRun = false;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }).start();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return START_NOT_STICKY;
|
return START_NOT_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,17 +253,14 @@ feff0041c9c0c5b4bc18005a
|
|||||||
sPort.close();
|
sPort.close();
|
||||||
sPort = null;
|
sPort = null;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
showToast(getApplication(),"stop Error");
|
showToast(getApplication(), "stop Error");
|
||||||
}
|
}
|
||||||
serviceIntent = null;
|
serviceIntent = null;
|
||||||
setAlarmTimer();
|
setAlarmTimer();
|
||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
unregisterReceiver(mReceiver);
|
unregisterReceiver(mReceiver);
|
||||||
showToast(getApplication(),"stop Service");
|
showToast(getApplication(), "stop Service");
|
||||||
// if (mainThread != null) {
|
|
||||||
// mainThread.interrupt();
|
|
||||||
// mainThread = null;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -384,60 +300,4 @@ feff0041c9c0c5b4bc18005a
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
|
|
||||||
|
|
||||||
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:기억해줘요 내 모든 날과 그때를 - 거미
|
|
||||||
|
|
||||||
2019-09-07 12:15:16.312 19489-19489/com.flywithu.carnav D/MUSIC: position 38119 (java.lang.Long)
|
|
||||||
2019-09-07 12:15:16.312 19489-19489/com.flywithu.carnav D/MUSIC: trackLength 162923 (java.lang.Long)
|
|
||||||
2019-09-07 12:15:16.312 19489-19489/com.flywithu.carnav D/MUSIC: trackLength 162923 (java.lang.Long)
|
|
||||||
*/
|
|
||||||
String action = intent.getAction();
|
|
||||||
String cmd = intent.getStringExtra("command");
|
|
||||||
Log.v("MUSIC ", action + " / " + cmd);
|
|
||||||
String artist = intent.getStringExtra("artist");
|
|
||||||
String album = intent.getStringExtra("album");
|
|
||||||
String track = intent.getStringExtra("track");
|
|
||||||
Log.v("MUSIC", artist + ":" + album + ":" + track);
|
|
||||||
|
|
||||||
|
|
||||||
// Toast.makeText(MainActivity.this, track, Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -4,7 +4,6 @@ import android.content.BroadcastReceiver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
public class RebootReceiver extends BroadcastReceiver {
|
public class RebootReceiver extends BroadcastReceiver {
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,7 +9,6 @@ import android.content.Intent;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
||||||
|
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
|
|
||||||
public class RestartService extends Service {
|
public class RestartService extends Service {
|
||||||
|
@ -3,6 +3,7 @@ package com.flywithu.carnav;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -57,13 +58,20 @@ public class ExampleUnitTest {
|
|||||||
public void checkout()
|
public void checkout()
|
||||||
{
|
{
|
||||||
//55 34 50 4C 33 33 7C ED 9C 98 EC 9D B8 20 28 57 68 65 65 20 49 6E 29 7C 0D
|
//55 34 50 4C 33 33 7C ED 9C 98 EC 9D B8 20 28 57 68 65 65 20 49 6E 29 7C 0D
|
||||||
String test = "A지어반Z";
|
String test = "오";
|
||||||
//EC A7 80 EC 96 B4 EB B0 98
|
//EC A7 80 EC 96 B4 EB B0 98
|
||||||
|
|
||||||
|
//오
|
||||||
|
//오
|
||||||
|
// ec98a4
|
||||||
|
//feffc624
|
||||||
|
//0000c624
|
||||||
System.out.println(test);
|
System.out.println(test);
|
||||||
try {
|
try {
|
||||||
System.out.println(bytesToHex(test.getBytes("utf-8")));
|
System.out.println(bytesToHex(test.getBytes("utf-8")));
|
||||||
System.out.println(bytesToHex(test.getBytes("utf-16")));
|
System.out.println(bytesToHex(test.getBytes("utf-16")));
|
||||||
System.out.println(bytesToHex(test.getBytes("utf-32")));
|
System.out.println(bytesToHex(test.getBytes("utf-32")));
|
||||||
|
System.out.println(new String(new byte[]{0x0,(byte)0xec,0x0,(byte)0x98,0x0,(byte)0xa4}, StandardCharsets.UTF_16));
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user