Show HN: PHONK, JavaScript scripting for Android devices
phonk.app
phonk.app
- PHONK is a full dev environment that lives within the phone / tablet
- The Web Editor is hosted inside the device and served using a web server. So no 3rd party servers / cloud needed.
- It can access the device sensors in a couple of lines of code
- Has support for Websockets, MQTT, OSC, Midi, Bluetooth, Bluetooth BLE, NFC and more in a very concise way
- You can connect an Arduino straight to the phone with a USB OTG cable and communicate with it
- UI uses normalized coordinates, which is very handy for prototyping. It comes with a variety of views for most needs. You can also create a custom one.
- There is live code execution from the Web Editor. Just select the code => Control (or CMD) + Shift + X and that code will be live executed.
- PHONK comes with a Console, so you can console out wirelessly to the Web Editor.
- It comes with OpenStreetMaps support by default
- More advanced 2d and 3d graphics can be done through Processing which is included as a library.
One error I see: I ran the Date under JavaScript Basics, and it gives the right long string date (Mon Jun 29 2020 13:38:02 GMT-0400 (EDT)), but when it pulls the fields it has a '5' for month.
I think I could integrate ARCore but did not have time yet to play with it, I would be happy to accept contributions since I've never used ARCore myself :) I will add an issue in the repo with the idea!
- From wikipedia
Really cool stuff I might add
I realized about the music genre a bit later and quite like it! I should get some vibes from the music into the project :)
Theoretically one could write a scripting language for it, but it stores its programs in a proprietary binary format and the parser class is too hairy for me to reverse engineer. (the decompiler in jadx only gives you smali for most of it, control flow is too complex)
Just opened an issue to have it in mind and check how feasible it is https://github.com/victordiaz/phonk/issues/20
Looking at the API it supports i think for the most apps i use on daily basis can be prototyped without the bulky Android Studio.
I didn't know about GraalJS I will have a look and reopen this issue https://github.com/victordiaz/phonk/issues/4 Thanks for pointing at it!
1. The scripts you write calls directly to Java methods, so is much easier to access Android API calls
2. PHONK is not only a framework, is a development environment that lives in your phone, so no needs to install npm or any other tool in your computer. You can write scripts directly on the phone, or using a remote Web Editor that is hosted by the device itself
3. The PHONK API is tailored for quick prototyping, making and exploration. I invite you to have a look to the built-int examples and see how easy is to access sensor data, communicate with Bluetooth Low Energy, add maps or create interactive sound to name a few things!
Thats definitely the cool part. With a debugger I can definitely see some good use cases for this.
What debugging workflow do you think would be important?
so for example you can write the following to include a button
ui.addButton('Click me', 0.1, 0.1, 0.8, 0.2)
That's quite fast to do, but on the other side it makes it a bit cumbersome if your UI is complex and you need to support lots of screen sizes.The good thing is that PHONK is quite easy to extend and virtually you could expose any Android API to the Javascript engine.
Packaging a PHONK script is possible but I haven't had much time yet to write a guide. I you want, you can follow this issue and upvote it if you think is worth it to have a guide! https://github.com/victordiaz/phonk/issues/9
Sometimes if you write some code that makes PHONK unhappy, the app will freeze / crash but that's all :)