meshenger-android
meshenger-android copied to clipboard
Testing the new version of Meshenger Android.
Hey everyone, I am done with all the modifications as per GSOC-22. Now what's left and is really important is to test it as much as possible, on several different devices and so on. So anyone interested in testing can download the debug apk from this [link].(https://drive.google.com/file/d/1DB7SeBq_MTc9zBfdAM829tIGWN_0qyRV/view?usp=sharing) If you find any bugs, point those with screenshots if possible. If you have any feature requests ,point that with a proper reason and how it'll help our target audience. The source codes can be found on GSOC-22 branch. Feedbacks are highly appreciated. Thankyou.
Oh, sorry. I missed this and just replied in the other issue. Downloading now.
Rather than (or in addition to) a GDrive link, directly attaching the APK to your OP would be great.
Also, maybe change the app and package name to Meshenger Debug or Test for this APK?
BTW do you have a summarised changelog or release notes anywhere? It would help in testing.
Right off the bat, opening the test app shows you a name dialog, and then another one saying "No Wifi card found, setup later?" even if Wifi is on and Internet is working. Tapping on "Ok" does nothing but show the dialog again.
If you tap on "skip", you get a mic permission prompt, but another window seems to open behind it (you see an animation giving this impression).
In advanced settings, I can see several MACs and IPs, which means the app can indeed detect that Wifi is on. But then that "card not found" dialog shouldn't have shown up.
What does "Default" do in the Video Resolutions menu? Automatically choose a resolution based on network speed? If so, is this a one-time thing? Or does it dynamically adjust resolution based on periodic network speed detection?
Maybe the app could detect the system theme and apply it on first startup.
Why is there an Import/Export Path text field? Tapping on the Import/Export buttons already takes you to the SAF file chooser, so that Path field seems redundant. It also doesn't get populated with your chosen path using the buttons.
The floating action buttons should probably have tooltips.
The About page could have a link to this Github repo, the issues tab, the releases tab for changelogs, etc.
Edit: On a 4.7 inch screen, the app didn't let me scroll down to tap "Save" on the MAC/IP address page.
@adicoder95 ?
hi @opusforlife2, sorry for the silence. We have decided to build on top of the master branch instead of the development branch and then integrate code from the development branch to the master branch.
The current code is here: https://github.com/meshenger-app/meshenger-android/tree/GSOC-22_new
@opusforlife2 please have a look, thank you. @adicoder95 feedback is valuable. Please have a look and see if we can address the issues.
That's perfectly fine, I just didn't see any acknowledgement so didn't know if my feedback was being taken into account. Please don't hesitate in pinging me when a new debug build needs testing.
@opusforlife2 actually I was working towards the newer version of it, sorry about not responding as I got a bit stuck and forgot about that. Yes I did went through what you said then and tried to resolve the same. Here is the debug apk of the latest Meshenger version 4.0.0 https://drive.google.com/file/d/1ARogJkEMHEiP226GYuSTUrOT-ZOrKdLf/view?usp=sharing Thanks.
- I could successfully add contacts.
- But calls don't work. It says "Error".
- After ending the call, the proximity sensor stays active. Need to swipe away the app to deactivate it.
- Small screens still have layout issues.
- Toggling night mode on and off takes you back to the main app, but on an Android 8 phone, it crashes the app instead.
@opusforlife2 you were connected to the same wifi on both device and still it showed an error?? Was the app open in both device as the apk I shared doesn't has the background call receiving thing active.
Yep. Same wifi. Both apps in foreground.
can you possibly send a video so I can have a look, Did you see the address management screen and made sure correct address is selected?
@opusforlife2 I just made a new commit with many fixes. I am attaching a link to the latest apk. Do check and let me know if the error still exists. https://we.tl/t-99jMqik4h1
Just opened the app after installing, and instead of the main screen, it took me to the "Display over other apps" system settings.
Edit: I didn't really understand what the giant red dot next to the username was about. In this latest APK, one of them turned green, which I assume means that the other device is seen online. The other is still red. I'll test with another phone tomorrow.
Meanwhile, since the app now works in the background, swiping away is not enough to deactivate the proximity sensor. The app needs to be force-stopped from settings.
Yes we need the display over other permission to make the app receive calls in the background. Exactly the red dot means that the device is not ready to make a call. I need to look about the proximity sensor, am not really sure about how we can fix it.
Yes we need the display over other permission to make the app receive calls in the background.
That's not the case with other VoIP-capable apps. Neither Telegram nor Element require it, for example. Just a permanent notification is enough.
Tried with another phone.
- Both successfully showed green dots.
- Calls were successfully established.
- But no voice could be heard on either device.
- Trying to turn on video caused a crash:
FATAL EXCEPTION: main
Process: d.d.meshenger.test, PID: 5884
java.lang.NullPointerException
at d.d.meshenger.RTCCall.setVideoEnabled(RTCCall.kt:74)
at d.d.meshenger.CallActivity.switchVideoEnabled(CallActivity.kt:245)
at d.d.meshenger.CallActivity.onCreate$lambda-4(CallActivity.kt:186)
at d.d.meshenger.CallActivity.lambda$tWlTn7dxVRpo580i4CpygWmhtds(Unknown Source:0)
at d.d.meshenger.-$$Lambda$CallActivity$tWlTn7dxVRpo580i4CpygWmhtds.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7259)
at android.view.View.performClickInternal(View.java:7236)
at android.view.View.access$3600(View.java:801)
at android.view.View$PerformClick.run(View.java:27892)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
@opusforlife2 I also experienced crashes. But every time I try to reproduce it to get a stack trace, it works.
@mwarning Scoop on F-Droid is amazing for such scenarios, if you have root or adb access.
I installed scoop. Now I need a crash :D
Update:
- Got calls to work successfully between two phones! Woohoo!
- The app only shows the other user's video. It should also show your own video.
- Now it seems like the proximity sensor problem only occurs for failed/incomplete/faulty calls. For successful calls, the sensor is correctly disengaged when the call ends.
- If you don't have the app open on a device and it receives a call, picking and ending that call still leaves the call screen available in Recent Apps. If you tap that, you get a ghost incoming call. If you accept it, it shows an error. If you reject it, the app correctly opens its main screen.
@opusforlife2 feel free to test again. The issue you have encountered are still present. But that is for the next release.
Nice @mwarning I didn't found any crashes in my android 12 devices.
@adicoder95 yes, no crashes. But what about bugs?
@mwarning I'll need a test APK for that.
I guess it is better to make a release and then a bugfix release to address any issues we encounter. It has been long enough. :-)
Testing release version 4.0.0 (🎉):
- Calls work perfectly between Android 12 and 10.
- If the app crashes for any reason while video is active, A12 shows the camera still being used (the green dot). Making another call and then cancelling it properly shuts off the camera too. This sounds like the same problem with the proximity sensor I mentioned above.
- For Android 8, the call gets established, but no sound or video goes through, for either participant. Trying to enable video causes a crash for the participant who received the call.
Edit 2: The app isn't dropping the mic access at all after ending the call. Not even after tapping "Exit" from the menu. It needs to be completely force-stopped before the mic stops being shown as used by the app. Both on A10 and A12. Edit 3: figured it out. If the call is cut from one device, the mic access is dropped on that device correctly. But the other device keeps showing the mic as being used. Overall, the app doesn't seem to disconnect from the camera/mic/proximity sensor when the call is cut from the other device or due to a crash.
Also, turning off the camera mid-call causes the last frame to freeze on the other device. It should go back to showing the audio call screen.
Also, the incoming call UI is just a blank screen with a couple of small buttons at the bottom. The buttons could be made much larger and hence more accessible, unless you plan on adding more elements to the screen.
Edit: BTW, for these crashes I got the same crash logs as I've already posted above. But I got a different one too (not sure about the exact steps to get it):
FATAL EXCEPTION: main
Process: d.d.meshenger, PID: 26356
java.lang.NullPointerException
at d.d.meshenger.MainService$MainBinder.getContacts(MainService.kt:361)
at d.d.meshenger.ContactListFragment.refreshContactList$lambda-5(ContactListFragment.kt:158)
at d.d.meshenger.ContactListFragment.$r8$lambda$E0WdHoz1oP2VkRRPLwN0DHvg1gI(Unknown Source:0)
at d.d.meshenger.ContactListFragment$$ExternalSyntheticLambda7.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7870)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Ok, thank you. I will take a look next week.
@opusforlife2 let's hope the bug is fixed now. Please create a new issue if it appears again.
No problem. Please also look at the other issues I've mentioned here for future versions.
A very small thing: since Meshenger has a permanent notification running, you could remove the time-ago from the notification header.