APDE USB / OTG communication

I am trying to repeat your successful feat.

I just need to take the last step to victory. how did you install the library you specified in APDE?

after all, this library lacks the elements necessary for connection, namely:
jar files are missing in the “libraries” folder! How did you manage to connect such a library to APDE? You wrote in your post that you did it. Did you convert the library with something, if so, how and with what?

@paulgoux
I saw that you are very good at libraries, please tell me how and with what I can recompile libraries from github so that they work on android in APDE (there is .jar, there is a folder “library”)?
I have seen the advice that this can be done using the “terminal ide”, but I have not found detailed instructions on how to do this anywhere. What are the options? I would be grateful for your help!

Im not particularly great with libraries, i jave an android repo that you can make use of ive posted it on the repo however i think ive figured out how to get any library onto android.

Take a look at the process.

Navigate to the library settings in apde until you get to this screen

Press dx dexer

Select the library you want to dex.(Note the ext requirements)

Then take a look at the files contained in the folder and their names.

As you can see i am dexing the fileWriter.jar library and so i need to name the output file fileWriter-dex.jar. Apde will dex your file and then you are good to go, i had no more crashes after this on my device.

Ive also managed to run my sketch with the jserial lib ive linked in a previous post.

i cant help any further as i dont have an arduino.

Ps

This is actually the solution posted by @jafal earlier in thread.

1 Like

and doesn’t need arduino.
the question is not about the robustness of the libraries, but about how to glue them to APDE.

I got it pretty good with dfx, use many days.
but where do I get the .jar files?
try sticking the serial port library used by @glv . the link in the previous post is just above. Just stick it on, you don’t have to run it.

Youll have to go with your preferred library, download them with a google search and copy the jar files into the appropriate folders.

The library im referring to was posted near the top of the convo, unfortunately its hard to scroll through such a long thread.

As for how to build libraries for android with eclipse.

Unfortunately i do not know how to do this in apde.

Now ive followed the thread as best i could and im pretty sure weve all posted solutions that work.

Help me understand which method you are using and what steps your are struggling with if anything.

Again following these steps i have managed to load the library with apde and run a sketch.

I jave not jeeded to amend any manifest or amend apde in any way.

https://fazecast.github.io/jSerialComm/

Download the jar

Add the jar to your library folder with the appropriate folder structure.

Import lib in apde.
Dex lib in apde.
Add import to the sketch.

To confirm i have made no use of the pc here to achieve any of this, phone only.

Done

1 Like

@paulgoux here is what i made in android mode see if you can find something to compare with

this is working code via android mode

the link somewhere here

import com.yourinventit.processing.android.serial.*;

//import processing.serial.*;               // imports library for serial communication


Serial SerialPort;                         // defines Object for Serial

String ang="";
String distance="";
String data="";

int angle, dist;

void setup() {
  
   size (1200, 700); 
   
  // myPort = new Serial(this,"COM4", 9600);                     // starts the serial communication
  
 SerialPort = new Serial(this, Serial.list(this)[0], 9600);
  SerialPort .bufferUntil('.');    // reads the data from the serial port up to the character '.' before calling serialEvent
   
 
  background(0);
}

void draw() {
  
                              //for the blur effect
      fill(0,5);              //colour,opacity
      noStroke();
      rect(0, 0, width, height*0.93); 
      
      noStroke();
      fill(0,255);
      rect(0,height*0.93,width,height);                   // so that the text having angle and distance doesnt blur out
      
      
      drawRadar(); 
      drawLine();
      drawObject();
      drawText();
}


void serialEvent (Serial myPort) {                                                     // starts reading data from the Serial Port
                                                                                      // reads the data from the Serial Port up to the character '.' and puts it into the String variable "data".
      data = myPort.readStringUntil('.');
      data = data.substring(0,data.length()-1);
      
      int index1 = data.indexOf(",");                                                    
      ang= data.substring(0, index1);                                                 
      distance= data.substring(index1+1, data.length());                            
      
      angle = int(ang);
      dist = int(distance);
      System.out.println(angle);
}

void drawRadar()
{
    pushMatrix();
    noFill();
    stroke(10,255,10);        //green
    strokeWeight(3);
    
    translate(width/2,height-height*0.06);
    
    line(-width/2,0,width/2,0);
    
    arc(0,0,(width*0.5),(width*0.5),PI,TWO_PI);
    arc(0,0,(width*0.25),(width*0.25),PI,TWO_PI);
    arc(0,0,(width*0.75),(width*0.75),PI,TWO_PI);
    arc(0,0,(width*0.95),(width*0.95),PI,TWO_PI);
    
    line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
    line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
    line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
    line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
    line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
    
    stroke(175,255,175); 
    strokeWeight(1);
    line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15)));
    line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45)));
    line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75)));
    line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105)));
    line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135)));
    line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165)));

    popMatrix();
}

void drawLine() {
  
    pushMatrix();
    
    strokeWeight(9);
    stroke(0,255,0);
    translate(width/2,height-height*0.06); 
    
   line(0,0,(width/2)*cos(radians(angle)),(-width/2)*sin(radians(angle)));
   

    popMatrix();
    
}


void drawObject() {
  
    pushMatrix();
    
    strokeWeight(9);
    stroke(255,0,0);
    translate(width/2,height-height*0.06);
   
    float pixleDist = (dist/40.0)*(width/2.0);                        // covers the distance from the sensor from cm to pixels
    float pd=(width/2)-pixleDist;
    
             
    float x=-pixleDist*cos(radians(angle));
    float y=-pixleDist*sin(radians(angle));
    
    if(dist<=40)                                                  // limiting the range to 40 cms
    {                               
       //line(0,0,pixleDist,0);  
       line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle))));
    }
    popMatrix();
}

void drawText()
{
    pushMatrix();
    
    fill(100,200,255);
    textSize(25);
    
    text("10cm",(width/2)+(width*0.115),height*0.93);
    text("20cm",(width/2)+(width*0.24),height*0.93);
    text("30cm",(width/2)+(width*0.365),height*0.93);
    text("40cm",(width/2)+(width*0.45),height*0.93);
    
    textSize(40);
    text("YAinnoware",width*0.08,height*0.99);
    text("Angle :"+angle,width*0.45,height*0.99);
    
    if(dist<=40) {
      text("Distance :"+dist,width*0.7,height*0.99);
    }
      
   translate(width/2,height-height*0.06);
   textSize(25);
   
   text(" 30°",(width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
   text(" 60°",(width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
   text("90°",(width/2)*cos(radians(91)),(-width/2)*sin(radians(90)));
   text("120°",(width/2)*cos(radians(123)),(-width/2)*sin(radians(118)));
   text("150°",(width/2)*cos(radians(160)),(-width/2)*sin(radians(150)));
    
    popMatrix();  
  
}

i have added 2 files to the root folder

this in the main root AndroidManifest

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="">
    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="28"/>
    <application android:icon="@mipmap/ic_launcher" android:label="">
        <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
            </intent-filter>
            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter"/>
        </activity>
    </application>
</manifest>

and created folders inside root folder \res\xml then added this file device_filter

<?xml version="1.0" encoding="UTF-8"?>

-<resources>

<!-- 0x0403 / 0x6001: FTDI FT232R UART -->


<usb-device product-id="24577" vendor-id="1027"/>

<!-- 0x2341 / Arduino -->


<usb-device vendor-id="9025"/>

<!-- 0x16C0 / 0x0483: Teensyduino -->


<usb-device product-id="1155" vendor-id="5824"/>

<!-- 0x10C4 / 0xEA60: CP210x UART Bridge -->


<usb-device product-id="60000" vender-id="4292"/>

</resources>

i have tested many sketch all work fine

@ZENAR57 this is what i could reach

1 Like

Thank you and so i can understand, can you please explain the purpose of adding the device filter, is this a requirement for the library or the usb connection?

Also here is a link to the library @jafal was using

1 Like

your code completely works 100%.
full match of manifest files and device_filter.xml.
BUT!
THE LIBRARY THAT YOU USED ON YOUR PERSONAL COMPUTER, COULD YOU INSTALL (ADHESIVE) TO YOUR PHONE-ANDROID-APDE?

it is indicate that hardware connected and determined the usb driver chip there is other device filter files could be used i am going to compile sketch with out this file and see what happen

1 Like

@ZENAR57 i am trying but i have some health issue

the library needs files organization the structure of it is not like other libraries i try 1 file but did not know how or where to move it

1 Like

1 Like

Have you also had a coronavirus?
I will not torture you. Answer when you feel good!

I do not know either. I thought @paulgoux knew.
I have a lot of them.

You are afraid that it will infect you, :kissing_heart: :kissing_heart: :kissing_heart: :kissing_heart: :kissing_heart: :kissing_heart: no not the Coronavirus

it is toothache and swollen face causing difficult to read

1 Like

I have already been ill twice that year and this year.

I suggest you pause and continue in a few days!

@ZENAR57 this is the library i am using 0.1.0-alpha

download it and use the dx dexer 3 times once for each jar file there is 3 jar files inside it

now you have correct library and working examples make the steps glv said to you

1 Like



1 Like

when you download the library keep name of it AndroidSerial

even the library shown without doing dx dexer it wont work you have to make dx dexer for the 3 jar files

1 Like

Yes.
three days ago.
not working.
crash programs.
0-1-0_alpha

import org.slf4j.*;
import org.slf4j.helpers.*;
import com.yourinventit.processing.android.serial.*;
import com.hoho.android.usbserial.util.*;
import org.slf4j.spi.*;
import com.hoho.android.usbserial.driver.*;
import org.slf4j.impl.*;

Serial port;
 float val = 0;
 int temp=1;
 void setup() {
 size(800,800);
 background(0,100,0);
 
 
 delay(4000);

 if (Serial.list(this)[0] ==null){temp=0;}
 
 
 //port = new Serial(this,Serial.list(this)[0],57600);
 //port.bufferUntil('\n');
 
 }
 void draw() {
 
 if (Serial.list(this)[0] ==null){temp=0;}
 fill(0, 250,50);
 ellipse(40,40,70,70);
 fill(255, 50,50);
 text(temp, 300,300);
 //text(received, 100,200);
 }
 /*
 void serialEvent(Serial port) {
 val = float (port.readStringUntil ('\n'));
 
 if ( port.available() > 0) { // если есть данные, 
 received = port.readStringUntil('\n'); // считываем данные } println(received); //о��ображаем данные
 
 }
 
 }*/

since in the function "setup " you can’t draw, I had to insert for clarity and understanding delay (4000); , it can be clearly seen in the video.

NO ELLIPSE!