euphony-io / euphony Goto Github PK
View Code? Open in Web Editor NEWEuphony; Acoustic Data Telecommunication Library For Android
Home Page: https://dev.jbear.co/euphony
License: Apache License 2.0
Euphony; Acoustic Data Telecommunication Library For Android
Home Page: https://dev.jbear.co/euphony
License: Apache License 2.0
Originally posted by phj0407 September 13, 2022
While I apply Euphony library for sample app project, I find using one more object can cause malfunciton. I think applying singleton pattern to EuRxManager can prevent potential issue.
Now, EuRxManager have 3 constructor.
public EuRxManager() {
mOption = EuOption.builder()
.modeWith(EuOption.ModeType.DEFAULT)
.encodingWith(EuOption.CodingType.BASE16)
.modulationWith(EuOption.ModulationType.FSK)
.build();
}
public EuRxManager(RxEngineType engineType) {
rxEngineType = engineType;
if(rxEngineType == RxEngineType.EUPHONY_NATIVE_ENGINE)
nativeCore = EuNativeConnector.getInstance();
else
nativeCore = null;
}
public EuRxManager(EuOption.ModeType mode) {
mOption = EuOption.builder()
.modeWith(mode)
.build();
}
I think public EuRxManager()
,public EuRxManager(EuOption.ModeType mode)
can be combined. And initializing nativeCore
can be solved seperately by add new method.
This is the one of the good first issue
Currently, when we select the issues tab, we can see below menu.
Now, our plan is to make a link to discussions additionally (https://github.com/euphony-io/euphony/discussions)
Finally, we want to see like below
When you're creating Ask a question
, you need to follow requirement
Ask a question
Ask a question
Please refer to below link.
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
As the number of gtests increases, the build fails on API30 as it does with API28.
On API30, the build fails after 285 tests.
@euphony-io/euphonyforever-a 팀에 배정되는 첫번째 이슈입니다.
초보 개발자 입장에서도 Guide를 보며 쉽게 라이브러리를 사용할 수 있는 친절한 설명이 필요할 것 같습니다.
현재는 아래 정도로 README.md에 적혀 있어요.
정말 간단하게 Java에서의 사용법만 나와있는데
최근에는 kotlin 기반 안드로이드 앱이 많이 나오고 있기도 하고
이에 대한 guide도 필요한 상황입니다. (자바로 라이브러리가 구성되어 있더라도 Kotlin에서 쓰는 것이 가능합니다)
Java와 Kotlin 둘다 좀 더 디테일한 설명과
markdown을 이용해 사용자 입장에서 알아보게 정리하는 방법이 있을까요?
우선은 여기 issue를 통해서 팀원들과 커뮤니케이션을 하면서 전체 구성을 완성해보시구요.
내용도 어떻게 쓸지 각자 여기 남겨가면서 작성해보면 좋겠습니다.
markdown을 연습한다는 생각으로 많이 많이 써주시면 좋을 것 같아요.
PR은 이번주 토요일 이후에 진행해보시도록 할게요 :)
https://github.com/euphony-io/euphony#euphony-is-very-easy-to-use
This is one of the good first issue
This repository doesn't have the Sample App Proposal
We have plan to create modern issue templates that have customizable web form fields.
One of the great example is our bug report
here, PR link
In this issue, we need to make Sample App Proposal
's issue template
Normal EuPI Log
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/OboeAudio: openStream() OUTPUT -------- OboeVersion1.6.1 --------
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: rate = 44100, channels = 1, format = 5, sharing = EX, dir = OUTPUT
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: usage = 1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2021-09-30 16:50:57.476 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: privacy sensitive = false
2021-09-30 16:50:57.477 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::PlayerBase()
2021-09-30 16:50:57.482 8924-8924/co.jbear.euphony_speaker D/AudioStreamInternal_Client: open() - openStream() returned -889, try switching from MONO to STEREO
2021-09-30 16:50:57.483 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::~PlayerBase()
2021-09-30 16:50:57.483 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::PlayerBase()
2021-09-30 16:50:57.483 8924-8924/co.jbear.euphony_speaker D/AudioStreamTrack: open(), request notificationFrames = -8, frameCount = 0
2021-09-30 16:50:57.485 8924-8924/co.jbear.euphony_speaker D/AudioTrack: createTrack_l(0): AUDIO_OUTPUT_FLAG_FAST denied by server; frameCount 0 -> 1764
2021-09-30 16:50:57.485 8924-8924/co.jbear.euphony_speaker I/AudioTrack: Need throttle time for OpenSLES player
2021-09-30 16:50:57.485 8924-8924/co.jbear.euphony_speaker D/AudioTrack: setVolume(1.000000, 1.000000) pid : 8924
2021-09-30 16:50:57.485 8924-8924/co.jbear.euphony_speaker D/AAudioStream: setState(s#6) from 0 to 2
2021-09-30 16:50:57.488 8924-8924/co.jbear.euphony_speaker W/AudioStreamTrack: open() flags changed from 0x00000104 to 0x00000000
2021-09-30 16:50:57.488 8924-8924/co.jbear.euphony_speaker W/AudioStreamTrack: open() perfMode changed from 12 to 10
2021-09-30 16:50:57.489 8924-8924/co.jbear.euphony_speaker I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#6 ----------------
2021-09-30 16:50:57.489 8924-8924/co.jbear.euphony_speaker D/AAudio: AAudioStream_requestStart(s#6) called --------------
2021-09-30 16:50:57.489 8924-8924/co.jbear.euphony_speaker D/AAudioStream: setState(s#6) from 2 to 3
2021-09-30 16:50:57.491 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::start() from IPlayer
2021-09-30 16:50:57.492 8924-9540/co.jbear.euphony_speaker D/AudioStreamLegacy: onAudioDeviceUpdate() devId 3 => 3
2021-09-30 16:50:57.492 8924-8924/co.jbear.euphony_speaker D/AAudio: AAudioStream_requestStart(s#6) returned 0 ---------
2021-09-30 16:50:57.492 8924-8924/co.jbear.euphony_speaker D/NDK_TEST: EUPHONY / EpnyTxEngine: OK
Abnormal EuPI Log After calling 38 times
021-09-30 16:54:36.250 8924-8924/co.jbear.euphony_speaker I/OboeAudio: openStream() OUTPUT -------- OboeVersion1.6.1 --------
2021-09-30 16:54:36.250 8924-8924/co.jbear.euphony_speaker I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2021-09-30 16:54:36.251 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: rate = 44100, channels = 1, format = 5, sharing = EX, dir = OUTPUT
2021-09-30 16:54:36.251 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: device = 0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2021-09-30 16:54:36.251 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: usage = 1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2021-09-30 16:54:36.251 8924-8924/co.jbear.euphony_speaker I/AudioStreamBuilder: privacy sensitive = false
2021-09-30 16:54:36.251 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::PlayerBase()
2021-09-30 16:54:36.255 8924-8924/co.jbear.euphony_speaker D/AudioStreamInternal_Client: open() - openStream() returned -889, try switching from MONO to STEREO
2021-09-30 16:54:36.257 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::~PlayerBase()
2021-09-30 16:54:36.257 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::PlayerBase()
2021-09-30 16:54:36.257 8924-8924/co.jbear.euphony_speaker D/AudioStreamTrack: open(), request notificationFrames = -8, frameCount = 0
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker E/IAudioFlinger: createTrack returned error -12
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker E/AudioTrack: createTrack_l(0): AudioFlinger could not create track, status: -12 output 0
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker W/AudioTrack: removeAudioDeviceCallback removing different callback!
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker D/AAudioStream: setState(s#88) from 0 to 11
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker D/AudioTrack: gather(): no metrics gathered, track status=-12
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker D/AAudioStream: setState(s#88) from 11 to 12
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker E/AudioStreamTrack: open(), initCheck() returned -12
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker D/euphony_speake: PlayerBase::~PlayerBase()
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker I/AAudio: AAudioStreamBuilder_openStream() returns -896 = AAUDIO_ERROR_INTERNAL for s#0 ----------------
2021-09-30 16:54:36.260 8924-8924/co.jbear.euphony_speaker E/NDK_TEST: Error creating playback stream. Error: ErrorInternal
Why build fails, when multiple devices are connected?
How can I resolve this?
Originally posted by DahyeonWoo September 12, 2022
I want to write several documents, but I want to manage them with one issue. I wonder if it's possible to allocate an issue to me.
@euphony-io/euphony-co 팀에 배정되는 첫번째 이슈입니다.
초보 개발자 입장에서도 Guide를 보며 쉽게 라이브러리를 사용할 수 있는 친절한 설명이 필요할 것 같습니다.
스크린샷과 같은 그림 등이 들어가면 좋겠죠??
현재는 아래 정도로 README.md에 적혀 있어요.
안드로이드 라이브러리를 사용하는 방법은 gradle에서 maven 저장소를 사용하는 방법도 있겠지만
다른 방법도 있는데 팀원들이 다같이 한번 찾아보시면서 직접 경험도 해보면 좋을 것 같구요 (라이브러리를 직접 추가해서 사용하는 방법)
reference) https://github.com/google/oboe/blob/main/docs/GettingStarted.md
우선은 여기 issue를 통해서 팀원들과 커뮤니케이션을 하면서 전체 구성을 완성해보시구요.
내용도 어떻게 쓸지 각자 여기 남겨가면서 작성해보면 좋겠습니다.
markdown을 연습한다는 생각으로 많이 많이 써주시면 좋을 것 같아요.
PR은 이번주 토요일 이후에 진행해보시도록 할게요 :)
Originally posted by phj0407 September 2, 2022
Hello, I and @nodobi are planning to make EuPI sample app, 'eupi-presentor' , and want repository for it! We will use kotlin and compose.
It will have two features.
EuOption의 Singleton 패턴 적용
현재 Action CI 에서는 아래와 같은 업데이트 필요
PREREQUISITE
https://github.com/euphony-io/euphony/blob/master/PREREQUISITE.md
Euphony v0.8.0.1
has been released, so below things also should be updated.
build.gradle
should be updated)MavenCentral euphony artifact
link should be updated)MainActivity
sample code should be updated; As android updated, requestPermissions
function was deprecated)No response
Waple
Waple is a service that helps fast and easy Wi-Fi password sharing using sound communication Euphony.
It provides the following functions:
🧇 Wi-Fi provider
🧇 Wi-Fi user
Provide a password with store name information
Connect directly to Wi-Fi or copy password
We will update...
Save the Wi-Fi history you recently received (✔Additional functionality)
Co-authored-by: @zion830 https://github.com/zion830
Co-authored-by: @haan823 https://github.com/haan823
wave-show-card
(Visually Impaired)
(Clerk)
Co-authored-by: @sunyeongan @Han-D-Peter @defwdahyun0
This is one of the good first issue
As you can see, there are 2 links to open blank issue
.
One is the Don't see your issue? Open a blank issue.
in the lower left.
Another one is the Custom issue template
.
How about deleting the Custom issue template
menu?
It is overlapping, but it also seems to go against unity.
Originally posted by SeonJK September 18, 2022
While using EuTxManager with multiple instances, they cause wrong execution.
For example, adding multiple EuTxManager due to add multiple EuPI, app cannot easily manage EuPI.
By applying Singleton pattern, code prevents from several issues.
I suggest singleton pattern by Bill Pugh solution. It makes sure Thread-safe.
Applying singleton pattern by @volatile and @synchronized causes performance decreasement.
However by Bill Pugh solution, EuTxManager class makes singleton through Holder class. Holder class makes sure to load once.
References:
Account-Touch
Co-authored-by: @yoouyoou @HongEunbeen @kldaji
Describe the bug
There is glitch sound on Continous Phase FSK.
it is regard to derivative of sin function.
please consider cos function to calculate proper phase difference.
Kotlin, Compose, Declarative Programming, UI, Component
euphony
library porting.TxRxChecker
This is one of the good first issue
This repository has the old feature request
template that has made by markdown
https://github.com/euphony-io/euphony/blob/master/.github/ISSUE_TEMPLATE/feature_request.md
We have plan to update modern issue templates that have customizable web form fields.
One of the great example is our bug report
here, PR link
In this issue, we need to make feature request
's issue template
aar
library extracted by building euphony
libraryEuphony version has been upgraded, so HOWTOBUILD.md needs to be updated.
This is one of the good first issue
There is no Documentation
issue template in this repository.
We have plan to create modern issue templates that have customizable web form fields.
One of the great example is our bug report
here, PR link
In this issue, we need to make Documentation
's issue template
Originally posted by zion830 September 5, 2022
The latest update of euphony has started to include compose
.
Following this update, I want to improve github action settings!
By using android emulator runner, if the ui package changes, run the ui test.
Originally posted by zion830 September 7, 2022
EuTxManager가 사용될때 여러 인스턴스가 생성되어 사용될 경우, 오동작을 일으킬 수 있음.
Singleton 적용을 통해 잠재 이슈를 사전에 방지한다.
co.euphony.tx.TxUnitTest > tx_default_test FAILED
java.lang.UnsatisfiedLinkError at TxUnitTest.java:20
co.euphony.tx.TxUnitTest > tx_ascii_live_fsk_test FAILED
java.lang.NoClassDefFoundError at TxUnitTest.java:20
Environment
Device : Pixel 3a (Android Emulator)
OS : Android 10
Android Studio : Arctic Fox | 2020.3.1
Describe the bug
When inserting EuRxManager
object into the code, there's a problem that the app is terminated with fatal exception.
Initializing this object causes NoClassDefFoundError
.
The imported Euphony
is 0.7.1.6 version on the centralMaven artifact repository
implementation 'co.jbear.lib:euphony:0.7.1.6'
While looking for a way to resolve this issue, I found out that this issue may have been caused by setting 'testCoverageEnabled true' in library module.
(ref. Setting 'testCoverageEnabled true' in library module crashes app on start-up)
Fortunately, it was reflected in a084f06 recently as I looked at commit history and from the next version, it seems that this issue will not be there.
But for the unlucky person who import co.jbear.lib:euphony:0.7.1.6
like me, I thought I should report the solution to this issue.
I hope this report helps someone suffering🤣
And also, thanks to @designe comment, I got to know version prior to 0.8 is working well on jcenter.
I have no idea what's different
implementation 'euphony.lib:euphony:0.7.1.6'
and
implementation 'co.jbear.lib:euphony:0.7.1.6'
Should we add the
implementation 'co.jbear.lib:euphony:0.7.1.6' ??
library content is not different.
but,
euphony.lib:euphony:0.7.1.6 is on the jcenter
and co.jbear.lib:euphony:0.7.1.6 is on the centralMavenWe're going to use centralMaven after 0.8 version, because jcenter artifact repository was sunset last year :(
Previous uploaded version is working well on jcenter.
So, don't care about centralMaven version in v0.7.1.6
So the simplest solution is to use euphony.lib:euphony:0.7.1.6
!
implementation 'euphony.lib:euphony:0.7.1.6'
When I tried to build the project with API version 28 or 30, I ran into some errors.
I failed to build and faced message ninja: build stopped: subcommand failed.
even though test cases were all passed.
What I've tried as far is as follows, but they didn't work.
This is what I expected to happen.
- OS: Windows 10
- API level: 28, 30
I refered to these issues and discussions.
When I used Pixel XL API 32
, the project completely succeed to build.
I think it is good to notice users who try to build with API version 28 or 30 that the API versions can make build errors. And also, how about do not run gtest with the API versions?
This is one of the good first issue
In euphony
repository, there is a .gitignore
https://github.com/euphony-io/euphony/blob/40b13311c7a86a0bc404cbe54a7fc5c5d2e91c8f/.gitignore
Even though they are specified in .gitignore
, files that remain without being deleted are visible.
And it is determined that .gitignore needs to be updated to the latest.
For example,
IntelliJ
& android-studio
IDEFeel free to update .gitignore
for android project & Remove all legacy stuffs
Suggested Idea : https://github.com/orgs/euphony-io/discussions/186
Now in Euphony, we have to wait infinitely until communication finishes.
it will be useful to add a new function that sets the maximum waiting time, like the timeout option of HTTP.
idea proponent : @zion830
listen(timeout: Long = 0L)
Originally posted by SeonJK August 28, 2022
Hi, there!
I and @yoouyoou want to make EuPI-Camera demo app.
we will make two apps.
Originally posted by zion830 September 5, 2022
The latest update of euphony has started to include compose
.
Following this update, I want to improve github action settings!
By using android emulator runner, if the ui package changes, run the ui test.
Originally posted by haan823 September 8, 2022
초보 개발자 입장에서도 Guide를 보며 쉽게 빌드할 수 있게 친절한 설명이 필요할 것 같습니다.
스크린샷과 같은 그림 등이 들어가면 좋겠죠??
지금 버전인 0.7.1.6은 사실 라이브러리 빌드만 봤을때 엄청 간단하기 하지만
android-studio를 이용하지 않은 gradlew를 통한 빌드나 unit-test guide로의 확장이 가능할 것 같아요.
우선은 여기 issue를 통해서 팀원들과 커뮤니케이션을 하면서 전체 구성을 완성해보시구요.
내용도 어떻게 쓸지 각자 여기서 남겨가면서 작성해보면 좋겠습니다.
markdown을 연습한다는 생각으로 많이 많이 써주시면 좋을 것 같아요.
PR은 이번주 토요일 이후에 진행해보시도록 할게요 :)
Thanks to @kuro11pow2 , I find an bug during Base32 gtest!
TestParamType(std::vector<u_int8_t>{ 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }, "100000000")
It is a special case because it goes 1
00000000000000000000
00000000000000000000
. And when 00000000000000000000
enters the bitsToBase32
function, nothing happens because of the condition of while loop while(value != 0)
.
The best way I think is to add exception code to catch 00000000000000000000
input case.
if(!value)result = "0000";
Because it is an unusual case.
I'm really appreciate to 'kuro11pow2' for making a sharp test case.
Please give me some solution or I'll make PR with my solution.
Originally posted by zion830 August 25, 2022
When we use Euphony without RECORD_AUDIO permission, the process is killed with IllegalStateException
Full error message
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord
When I first saw this, it's hard to know at once that it is caused by a permission.
Even though it's already written in README, it's a pretty common mistake.
So I suggest this idea!
Log.e
Example
Before calling listen(), you should acquire RECORD_AUDIO permission.
Originally posted by DahyeonWoo September 4, 2022
Hello, I am planning to make CharacterSet Auto Selector.
euphony/euphony/src/main/cpp/core/charset
euphony/euphony/src/main/cpp/tests/charset
Is there another name? 😀
Originally posted by Kimhaedam September 8, 2022
The package of euphony is co.euphony
, while the package of unit test is euphony.lib
.
So I want to fit this consistently!
TO DO
jcenter artifactory is shutting down.
move to mavenCentral artifactory.
refer to
https://proandroiddev.com/publishing-android-libraries-to-mavencentral-in-2021-8ac9975c3e52
https://central.sonatype.org/publish/publish-guide/#deployment
euphony/src/main/cpp/tests/base16Test.cpp
TestParamType(std::vector<u_int8_t>{ 0x61 }, "621"),
Why build success, even if test code has problem?
How can I resolve this?
This project does not specify a minimum version of Android.
Is the library also available in Android 7.0 (API level 24)? Please specify the minimum version in README.
이 프로젝트에는 안드로이드 최소 버전이 명시되어 있지 않습니다.
안드로이드 API 24 버전에서도 라이브러리 사용이 가능합니까? README에 최소 버전을 명시해주었으면 좋겠습니다.
wave-pdf
Sample App for using Euphony library - EuPI mode. You can show pdf file to viewer, and control it by controller.
In controller, you just move to control page and click button. Then, device will generate sound wave.
Co-authored-by: @phj0407 https://github.com/phj0407
Co-authored-by: @nodobi https://github.com/nodobi
Originally posted by DahyeonWoo September 12, 2022
Euphony was released using Travis CI, but now all of them have been migrated to github action.
I want to remove the old CI/CD dependency file.
Order-With
추후 업데이트
[ MAIN ]
[ Receive Menu ]
[ Receive Order ]
Co-authored-by: @phj0407
Co-authored-by: @SeonJK
Co-authored-by: @serim53
After I pulled project I couldn't run gtest with error below😢
CMake Error at C:/Users/YoungHong/euphony/euphony/src/main/cpp/tests/cmake.run.test.script:7 (string):
string sub-command STRIP requires two arguments.
I'm sorry that I find it too late, but can I ask why did you put string command to outside? @kuro11pow2
Github Action, CI/CD
paths-ignore
, commits modifying markdown files doesn't run Github ActionA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.