mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 04:25:22 +00:00
Merge branch 'main' into feature/qr
This commit is contained in:
@@ -243,17 +243,6 @@
|
||||
column="35"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="OldTargetApi"
|
||||
message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details."
|
||||
errorLine1=" targetSdk = 34"
|
||||
errorLine2=" ~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="build.gradle.kts"
|
||||
line="14"
|
||||
column="9"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="RedundantLabel"
|
||||
message="Redundant label can be removed"
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
<!-- Notification permissions -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<!-- Signature permission for internal UI shutdown broadcasts -->
|
||||
<uses-permission android:name="com.bitchat.android.permission.FORCE_FINISH" />
|
||||
<!-- Foreground service and boot permissions for long-running background mesh -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<!-- Connected device foreground service type for BLE operations (API 34+) -->
|
||||
@@ -49,6 +51,10 @@
|
||||
<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
||||
|
||||
<permission
|
||||
android:name="com.bitchat.android.permission.FORCE_FINISH"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
<application
|
||||
android:name=".BitchatApplication"
|
||||
android:allowBackup="false"
|
||||
|
||||
@@ -1,295 +1,290 @@
|
||||
Relay URL,Latitude,Longitude
|
||||
strfry.shock.network,39.0438,-77.4874
|
||||
wot.nostr.party,36.1627,-86.7816
|
||||
nostr.blankfors.se,60.1699,24.9384
|
||||
nostr.now,36.55,139.733
|
||||
nostr.simplex.icu,51.5121,-0.0005238
|
||||
relay.threenine.services,51.5524,-0.29686
|
||||
relay.barine.co,43.6532,-79.3832
|
||||
theoutpost.life,64.1476,-21.9392
|
||||
purplerelay.com,50.1109,8.68213
|
||||
nostrue.com,40.8054,-74.0241
|
||||
relay-arg.zombi.cloudrodion.com,1.35208,103.82
|
||||
shu02.shugur.net,21.4902,39.2246
|
||||
relayone.geektank.ai,18.2148,-63.0574
|
||||
relay03.lnfi.network,39.0997,-94.5786
|
||||
soloco.nl,43.6532,-79.3832
|
||||
relay-testnet.k8s.layer3.news,37.3387,-121.885
|
||||
nostr.azzamo.net,52.2633,21.0283
|
||||
nostr.red5d.dev,43.6532,-79.3832
|
||||
nostr.thebiglake.org,32.71,-96.6745
|
||||
nostr.tadryanom.me,43.6532,-79.3832
|
||||
schnorr.me,43.6532,-79.3832
|
||||
ithurtswhenip.ee,51.223,6.78245
|
||||
orly.ft.hn,50.4754,12.3683
|
||||
relay02.lnfi.network,39.0997,-94.5786
|
||||
relay.nosto.re,51.1792,5.89444
|
||||
strfry.openhoofd.nl,51.9229,4.40833
|
||||
relays.diggoo.com,43.6532,-79.3832
|
||||
relay.nostrhub.tech,49.0291,8.35696
|
||||
relay.artx.market,43.652,-79.3633
|
||||
relay.sigit.io,50.4754,12.3683
|
||||
nostr-relay.psfoundation.info,39.0438,-77.4874
|
||||
wot.brightbolt.net,47.6735,-116.781
|
||||
relay.bitcoinartclock.com,50.4754,12.3683
|
||||
khatru.nostrver.se,51.1792,5.89444
|
||||
relay.cosmicbolt.net,37.3986,-121.964
|
||||
adre.su,59.9311,30.3609
|
||||
nostrelay.memory-art.xyz,43.6532,-79.3832
|
||||
temp.iris.to,43.6532,-79.3832
|
||||
nproxy.kristapsk.lv,60.1699,24.9384
|
||||
relay.ngengine.org,43.6532,-79.3832
|
||||
relay.puresignal.news,43.6532,-79.3832
|
||||
nostr.stakey.net,52.3676,4.90414
|
||||
nostr.commonshub.brussels,49.4543,11.0746
|
||||
wot.shaving.kiwi,43.6532,-79.3832
|
||||
espelho.girino.org,43.6532,-79.3832
|
||||
relay.thibautduchene.fr,43.6532,-79.3832
|
||||
nostr-relay.corb.net,38.8353,-104.822
|
||||
wot.soundhsa.com,33.1384,-95.6011
|
||||
relay.jabato.space,52.52,13.405
|
||||
relay.credenso.cafe,43.3601,-80.3127
|
||||
relayone.soundhsa.com,33.1384,-95.6011
|
||||
relay.bitcoinveneto.org,64.1466,-21.9426
|
||||
relay.samt.st,40.8302,-74.1299
|
||||
relay.vrtmrz.net,43.6532,-79.3832
|
||||
nostr.data.haus,50.4754,12.3683
|
||||
relay.npubhaus.com,43.6532,-79.3832
|
||||
strfry.elswa-dev.online,50.1109,8.68213
|
||||
relay.wavefunc.live,34.0362,-118.443
|
||||
wot.sovbit.host,64.1466,-21.9426
|
||||
relay.smies.me,33.7501,-84.3885
|
||||
nostr.bilthon.dev,25.8128,-80.2377
|
||||
relay-fra.zombi.cloudrodion.com,48.8566,2.35222
|
||||
santo.iguanatech.net,40.8302,-74.1299
|
||||
prl.plus,42.6978,23.3246
|
||||
relay-freeharmonypeople.space,38.7223,-9.13934
|
||||
nostream.breadslice.com,1.35208,103.82
|
||||
nostr.notribe.net,40.8302,-74.1299
|
||||
relay.fountain.fm,39.0997,-94.5786
|
||||
orangepiller.org,60.1699,24.9384
|
||||
nostr.21crypto.ch,47.5356,8.73209
|
||||
nostr.camalolo.com,24.1469,120.684
|
||||
okn.czas.top,51.267,6.81738
|
||||
relay.wolfcoil.com,35.6092,139.73
|
||||
nostr.quali.chat,60.1699,24.9384
|
||||
nostr-relay.online,43.6532,-79.3832
|
||||
alienos.libretechsystems.xyz,55.4724,9.87335
|
||||
ribo.eu.nostria.app,52.3676,4.90414
|
||||
wot.yesnostr.net,50.9871,2.12554
|
||||
nostr.overmind.lol,43.6532,-79.3832
|
||||
relay.chakany.systems,43.6532,-79.3832
|
||||
relay.hasenpfeffr.com,39.0438,-77.4874
|
||||
nostrelites.org,41.8781,-87.6298
|
||||
strfry.bonsai.com,37.8715,-122.273
|
||||
relay.agora.social,50.7383,15.0648
|
||||
alien.macneilmediagroup.com,43.6532,-79.3832
|
||||
relay.getsafebox.app,43.6532,-79.3832
|
||||
relay.nuts.cash,34.0362,-118.443
|
||||
notemine.io,52.2026,20.9397
|
||||
relay.nostr.place,32.7767,-96.797
|
||||
relay.21e6.cz,50.7383,15.0648
|
||||
nostr.casa21.space,43.6532,-79.3832
|
||||
premium.primal.net,43.6532,-79.3832
|
||||
relay5.bitransfer.org,43.6532,-79.3832
|
||||
nostr.rblb.it,43.7094,10.6582
|
||||
relay.goodmorningbitcoin.com,43.6532,-79.3832
|
||||
relay.camelus.app,45.5201,-122.99
|
||||
relay.origin.land,35.6673,139.751
|
||||
relay.fr13nd5.com,52.5233,13.3426
|
||||
nos.lol,50.4754,12.3683
|
||||
wot.nostr.net,43.6532,-79.3832
|
||||
relay.javi.space,43.4633,11.8796
|
||||
relay2.ngengine.org,43.6532,-79.3832
|
||||
relay.angor.io,48.1046,11.6002
|
||||
pyramid.treegaze.com,43.6532,-79.3832
|
||||
relay.letsfo.com,52.2633,21.0283
|
||||
relay.nostrzh.org,43.6532,-79.3832
|
||||
nostr.hekster.org,37.3986,-121.964
|
||||
relay.0xchat.com,1.35208,103.82
|
||||
nostr.czas.top,50.1109,8.68213
|
||||
nostr.superfriends.online,43.6532,-79.3832
|
||||
hsuite-nostr-relay.hbarsuite.workers.dev,43.6532,-79.3832
|
||||
relay.mccormick.cx,52.3563,4.95714
|
||||
nostr.88mph.life,51.5072,-0.127586
|
||||
strfry.ymir.cloud,34.0965,-117.585
|
||||
nostr.lkjsxc.com,43.6532,-79.3832
|
||||
yabu.me,35.6092,139.73
|
||||
relay.chorus.community,50.1109,8.68213
|
||||
nostr-02.yakihonne.com,1.32123,103.695
|
||||
neuromancer.nettek.io,39.1429,-94.573
|
||||
relay04.lnfi.network,39.0997,-94.5786
|
||||
nostr-relay.amethyst.name,39.0438,-77.4874
|
||||
nostrcheck.tnsor.network,43.6532,-79.3832
|
||||
wot.nostr.place,32.7767,-96.797
|
||||
cyberspace.nostr1.com,40.7057,-74.0136
|
||||
relay.guggero.org,47.3769,8.54169
|
||||
nostr.calitabby.net,39.9268,-75.0246
|
||||
x.kojira.io,43.6532,-79.3832
|
||||
nostr.agentcampfire.com,52.3676,4.90414
|
||||
relay.bullishbounty.com,43.6532,-79.3832
|
||||
relay.nostrverse.net,43.6532,-79.3832
|
||||
nostr.robosats.org,64.1476,-21.9392
|
||||
nostr-verified.wellorder.net,45.5201,-122.99
|
||||
nostr.huszonegy.world,47.4979,19.0402
|
||||
relay.cypherflow.ai,48.8566,2.35222
|
||||
nostr-relay.xbytez.io,50.6924,3.20113
|
||||
nostr.faultables.net,43.6532,-79.3832
|
||||
relay.libernet.app,43.6532,-79.3832
|
||||
relay.magiccity.live,25.8128,-80.2377
|
||||
relay.wellorder.net,45.5201,-122.99
|
||||
black.nostrcity.club,48.8575,2.35138
|
||||
relay.jeffg.fyi,43.6532,-79.3832
|
||||
freeben666.fr,43.7221,7.15296
|
||||
relay.nostr.wirednet.jp,34.706,135.493
|
||||
nostrelay.circum.space,52.3676,4.90414
|
||||
relay.islandbitcoin.com,12.8498,77.6545
|
||||
nostr-rs-relay.dev.fedibtc.com,39.0438,-77.4874
|
||||
relay.nostriot.com,41.5695,-83.9786
|
||||
relayrs.notoshi.win,43.6532,-79.3832
|
||||
nostr-pub.wellorder.net,45.5201,-122.99
|
||||
nostr.vulpem.com,49.4543,11.0746
|
||||
nostr.sathoarder.com,48.5734,7.75211
|
||||
wheat.happytavern.co,43.6532,-79.3832
|
||||
relay.nostr.net,43.6532,-79.3832
|
||||
bcast.girino.org,43.6532,-79.3832
|
||||
nostr-02.czas.top,51.2277,6.77346
|
||||
vault.iris.to,43.6532,-79.3832
|
||||
ynostr.yael.at,60.1699,24.9384
|
||||
nostr.nodesmap.com,59.3327,18.0656
|
||||
nostr.n7ekb.net,47.4941,-122.294
|
||||
relayb.uid.ovh,43.6532,-79.3832
|
||||
shu05.shugur.net,48.8566,2.35222
|
||||
dev-relay.lnfi.network,39.0997,-94.5786
|
||||
relay.bitcoindistrict.org,43.6532,-79.3832
|
||||
nostr.spicyz.io,43.6532,-79.3832
|
||||
nostr.0x7e.xyz,47.4988,8.72369
|
||||
relay.dwadziesciajeden.pl,52.2297,21.0122
|
||||
relay.zone667.com,60.1699,24.9384
|
||||
nostr-dev.wellorder.net,45.5201,-122.99
|
||||
nos.xmark.cc,50.6924,3.20113
|
||||
relay.etch.social,41.2619,-95.8608
|
||||
nostr.na.social,43.6532,-79.3832
|
||||
relay.orangepill.ovh,49.1689,-0.358841
|
||||
relay.olas.app,50.4754,12.3683
|
||||
relay.holzeis.me,43.6532,-79.3832
|
||||
relay2.angor.io,48.1046,11.6002
|
||||
relay.degmods.com,50.4754,12.3683
|
||||
vitor.nostr1.com,40.7128,-74.006
|
||||
relay.btcforplebs.com,43.6532,-79.3832
|
||||
nostr.luisschwab.net,43.6532,-79.3832
|
||||
relay.moinsen.com,50.4754,12.3683
|
||||
czas.xyz,48.8566,2.35222
|
||||
nostr.bitcoiner.social,39.1585,-94.5728
|
||||
nostr.mehdibekhtaoui.com,49.4939,-1.54813
|
||||
inbox.azzamo.net,52.2633,21.0283
|
||||
nostr.ovia.to,43.6532,-79.3832
|
||||
nostr.myshosholoza.co.za,52.3676,4.90414
|
||||
fenrir-s.notoshi.win,43.6532,-79.3832
|
||||
relay-rpi.edufeed.org,49.4521,11.0767
|
||||
chat-relay.zap-work.com,43.6532,-79.3832
|
||||
nostr.bond,50.1109,8.68213
|
||||
relay01.lnfi.network,39.0997,-94.5786
|
||||
relay.seq1.net,43.6532,-79.3832
|
||||
nostr.rikmeijer.nl,50.4754,12.3683
|
||||
offchain.pub,47.6743,-117.112
|
||||
nostr.spaceshell.xyz,43.6532,-79.3832
|
||||
nos4smartnkind.tech,40.1872,44.5152
|
||||
kotukonostr.onrender.com,37.7775,-122.397
|
||||
nostr.ps1829.com,33.8851,130.883
|
||||
relay.lightning.pub,39.0438,-77.4874
|
||||
nostr-relay.gateway.in.th,15.2634,100.344
|
||||
relay.thebluepulse.com,49.4521,11.0767
|
||||
relay.malxte.de,52.52,13.405
|
||||
relay.usefusion.ai,38.7134,-78.1591
|
||||
nostr-relay.cbrx.io,43.6532,-79.3832
|
||||
shu01.shugur.net,21.4902,39.2246
|
||||
nostr.jerrynya.fun,31.2304,121.474
|
||||
dev-nostr.bityacht.io,25.0797,121.234
|
||||
bitsat.molonlabe.holdings,51.4012,-1.3147
|
||||
relay.primal.net,43.6532,-79.3832
|
||||
relay.wavlake.com,41.2619,-95.8608
|
||||
nostr-relay.nextblockvending.com,47.2343,-119.853
|
||||
v-relay.d02.vrtmrz.net,34.6937,135.502
|
||||
nostr.mikoshi.de,47.74,12.0917
|
||||
nostr.coincards.com,53.5501,-113.469
|
||||
relay.snort.social,53.3498,-6.26031
|
||||
bitcoiner.social,39.1585,-94.5728
|
||||
nostr.noones.com,50.1109,8.68213
|
||||
wot.dergigi.com,64.1476,-21.9392
|
||||
relay.thebluepulse.com,49.4521,11.0767
|
||||
relay.guggero.org,47.3769,8.54169
|
||||
relay.lumina.rocks,49.0291,8.35695
|
||||
nostr-rs-relay-ishosta.phamthanh.me,43.6532,-79.3832
|
||||
nostr.snowbla.de,60.1699,24.9384
|
||||
strfry.felixzieger.de,50.1013,8.62643
|
||||
relay.satlantis.io,32.8769,-80.0114
|
||||
relay-dev.satlantis.io,40.8302,-74.1299
|
||||
nostr.davidebtc.me,51.5072,-0.127586
|
||||
relay.mattybs.lol,43.6532,-79.3832
|
||||
relay.fundstr.me,42.3601,-71.0589
|
||||
relay.tagayasu.xyz,43.6715,-79.38
|
||||
nostr-relay.zimage.com,34.0549,-118.243
|
||||
nostrcheck.me,43.6532,-79.3832
|
||||
bucket.coracle.social,37.7775,-122.397
|
||||
relay.siamdev.cc,13.9178,100.424
|
||||
r.bitcoinhold.net,43.6532,-79.3832
|
||||
skeme.vanderwarker.family,40.8218,-74.45
|
||||
articles.layer3.news,37.3387,-121.885
|
||||
no.str.cr,9.92857,-84.0528
|
||||
srtrelay.c-stellar.net,43.6532,-79.3832
|
||||
relay.comcomponent.com,34.7062,135.493
|
||||
relay.illuminodes.com,47.6061,-122.333
|
||||
nostr.openhoofd.nl,51.9229,4.40833
|
||||
nostr.plantroon.com,50.1013,8.62643
|
||||
slick.mjex.me,39.048,-77.4817
|
||||
relay.minibolt.info,43.6532,-79.3832
|
||||
nostr-relay-1.trustlessenterprise.com,43.6532,-79.3832
|
||||
relay.nostrdice.com,-33.8688,151.209
|
||||
wot.dtonon.com,43.6532,-79.3832
|
||||
shu04.shugur.net,25.2604,55.2989
|
||||
nostr.tavux.tech,48.8575,2.35138
|
||||
nostr-02.uid.ovh,43.6532,-79.3832
|
||||
relay.nostrcheck.me,43.6532,-79.3832
|
||||
relay.nsnip.io,60.1699,24.9384
|
||||
relay.toastr.net,40.8054,-74.0241
|
||||
relay.divine.video,43.6532,-79.3832
|
||||
nostr.4rs.nl,49.0291,8.35696
|
||||
wot.sebastix.social,51.1792,5.89444
|
||||
relay.openfarmtools.org,60.1699,24.9384
|
||||
relay.damus.io,43.6532,-79.3832
|
||||
purpura.cloud,43.6532,-79.3832
|
||||
wot.sudocarlos.com,51.5072,-0.127586
|
||||
relay.arx-ccn.com,50.4754,12.3683
|
||||
nostr.zoracle.org,45.6018,-121.185
|
||||
nostr.tac.lol,47.4748,-122.273
|
||||
relay.coinos.io,43.6532,-79.3832
|
||||
nostr.rtvslawenia.com,49.4543,11.0746
|
||||
relay.davidebtc.me,51.5072,-0.127586
|
||||
ribo.us.nostria.app,41.5868,-93.625
|
||||
relay.upleb.uk,51.9194,19.1451
|
||||
librerelay.aaroniumii.com,43.6532,-79.3832
|
||||
relay.endfiat.money,43.6532,-79.3832
|
||||
relay.nostar.org,43.6532,-79.3832
|
||||
relay.electriclifestyle.com,26.2897,-80.1293
|
||||
relay.nostrhub.fr,48.1045,11.6004
|
||||
relay.agorist.space,52.3734,4.89406
|
||||
freelay.sovbit.host,64.1476,-21.9392
|
||||
nostr.hifish.org,47.4043,8.57398
|
||||
nostr-01.yakihonne.com,1.32123,103.695
|
||||
relay.routstr.com,43.6532,-79.3832
|
||||
nr.yay.so,46.2126,6.1154
|
||||
bcast.seutoba.com.br,43.6532,-79.3832
|
||||
fanfares.nostr1.com,40.7128,-74.006
|
||||
nostr.girino.org,43.6532,-79.3832
|
||||
nostr2.girino.org,43.6532,-79.3832
|
||||
relay.notoshi.win,13.311,101.112
|
||||
nostrja-kari.heguro.com,43.6532,-79.3832
|
||||
relay.mostro.network,40.8302,-74.1299
|
||||
satsage.xyz,37.3986,-121.964
|
||||
relay-freeharmonypeople.space,38.7223,-9.13934
|
||||
nostr-relay.online,43.6532,-79.3832
|
||||
shu05.shugur.net,48.8566,2.35222
|
||||
relay.evanverma.com,40.8302,-74.1299
|
||||
nostr-2.21crypto.ch,47.5356,8.73209
|
||||
relay2.angor.io,48.1046,11.6002
|
||||
relay.arx-ccn.com,50.4754,12.3683
|
||||
relay.davidebtc.me,51.5072,-0.127586
|
||||
temp.iris.to,43.6532,-79.3832
|
||||
nostr.superfriends.online,43.6532,-79.3832
|
||||
vitor.nostr1.com,40.7057,-74.0136
|
||||
relay.moinsen.com,50.4754,12.3683
|
||||
ithurtswhenip.ee,51.223,6.78245
|
||||
nostr.tadryanom.me,43.6532,-79.3832
|
||||
relay.nostr.wirednet.jp,34.706,135.493
|
||||
relay.0xchat.com,1.35208,103.82
|
||||
nostrcheck.tnsor.network,43.6532,-79.3832
|
||||
relay.ngengine.org,43.6532,-79.3832
|
||||
relay.mitchelltribe.com,39.0438,-77.4874
|
||||
relaynostr.breadslice.com,43.6532,-79.3832
|
||||
nostr.chaima.info,51.223,6.78245
|
||||
nostr.mom,50.4754,12.3683
|
||||
wotr.relatr.xyz,53.3498,-6.26031
|
||||
relay.chorus.community,50.1109,8.68213
|
||||
orly.ft.hn,50.4754,12.3683
|
||||
nostr.stakey.net,52.3676,4.90414
|
||||
relay.malxte.de,52.52,13.405
|
||||
nostrelay.circum.space,52.3676,4.90414
|
||||
nostrcheck.me,43.6532,-79.3832
|
||||
wot.sudocarlos.com,51.5072,-0.127586
|
||||
relay.routstr.com,43.6532,-79.3832
|
||||
relay.siamdev.cc,13.8434,100.363
|
||||
wot.sovbit.host,64.1466,-21.9426
|
||||
strfry.bonsai.com,37.8715,-122.273
|
||||
freeben666.fr,43.7221,7.15296
|
||||
okn.czas.top,51.267,6.81738
|
||||
relay.nostar.org,43.6532,-79.3832
|
||||
relay.jeffg.fyi,43.6532,-79.3832
|
||||
nostr-02.uid.ovh,43.6532,-79.3832
|
||||
relay.fr13nd5.com,52.5233,13.3426
|
||||
srtrelay.c-stellar.net,43.6532,-79.3832
|
||||
relay.dwadziesciajeden.pl,52.2297,21.0122
|
||||
relay.sigit.io,50.4754,12.3683
|
||||
nostr.girino.org,43.6532,-79.3832
|
||||
bitsat.molonlabe.holdings,51.4012,-1.3147
|
||||
nostream.breadslice.com,1.35208,103.82
|
||||
nostr.rtvslawenia.com,49.4543,11.0746
|
||||
nostr.openhoofd.nl,51.9229,4.40833
|
||||
librerelay.aaroniumii.com,43.6532,-79.3832
|
||||
relay.etch.social,41.2619,-95.8608
|
||||
strfry.felixzieger.de,50.1013,8.62643
|
||||
relay.wavlake.com,41.2619,-95.8608
|
||||
relay.fundstr.me,42.3601,-71.0589
|
||||
slick.mjex.me,39.048,-77.4817
|
||||
relay.upleb.uk,51.9194,19.1451
|
||||
nos4smartnkind.tech,40.1872,44.5152
|
||||
discovery.eu.nostria.app,52.3676,4.90414
|
||||
nostr.tac.lol,47.4748,-122.273
|
||||
wot.nostr.net,43.6532,-79.3832
|
||||
nostr-dev.wellorder.net,45.5201,-122.99
|
||||
fanfares.nostr1.com,40.7128,-74.006
|
||||
relay.bitcoindistrict.org,43.6532,-79.3832
|
||||
nostr-relay.nextblockvending.com,47.2343,-119.853
|
||||
relay-rpi.edufeed.org,49.4521,11.0767
|
||||
relay.nsnip.io,60.1699,24.9384
|
||||
black.nostrcity.club,48.8575,2.35138
|
||||
nostr-02.czas.top,51.2277,6.77346
|
||||
schnorr.me,43.6532,-79.3832
|
||||
relay.fountain.fm,39.0997,-94.5786
|
||||
nostr-verified.wellorder.net,45.5201,-122.99
|
||||
relay.divine.video,43.6532,-79.3832
|
||||
relay.thibautduchene.fr,43.6532,-79.3832
|
||||
nostr.plantroon.com,50.1013,8.62643
|
||||
relay.hasenpfeffr.com,39.0438,-77.4874
|
||||
relay.chakany.systems,43.6532,-79.3832
|
||||
nostr-01.yakihonne.com,1.32123,103.695
|
||||
nostr.azzamo.net,52.2633,21.0283
|
||||
nostr.bond,50.1109,8.68213
|
||||
nostr.coincards.com,53.5501,-113.469
|
||||
relay.nostrhub.tech,49.0291,8.35696
|
||||
relay.cosmicbolt.net,37.3986,-121.964
|
||||
nostr.21crypto.ch,47.5356,8.73209
|
||||
relay-dev.satlantis.io,40.8302,-74.1299
|
||||
offchain.pub,47.6743,-117.112
|
||||
relay.orangepill.ovh,49.1689,-0.358841
|
||||
nostr-relay.gateway.in.th,15.2634,100.344
|
||||
nostr.now,36.55,139.733
|
||||
relay.usefusion.ai,38.7134,-78.1591
|
||||
nostr.lkjsxc.com,43.6532,-79.3832
|
||||
nproxy.kristapsk.lv,60.1699,24.9384
|
||||
relay.nostrverse.net,43.6532,-79.3832
|
||||
relay.zone667.com,60.1699,24.9384
|
||||
relay.origin.land,35.6673,139.751
|
||||
relay.damus.io,43.6532,-79.3832
|
||||
relay.bnos.space,1.35208,103.82
|
||||
relay.endfiat.money,43.6532,-79.3832
|
||||
relay.bullishbounty.com,43.6532,-79.3832
|
||||
wot.nostr.party,36.1627,-86.7816
|
||||
nostr.huszonegy.world,47.4979,19.0402
|
||||
theoutpost.life,64.1476,-21.9392
|
||||
nostr.noones.com,50.1109,8.68213
|
||||
relay.21e6.cz,50.7383,15.0648
|
||||
nostr-relay.xbytez.io,50.6924,3.20113
|
||||
wot.shaving.kiwi,43.6532,-79.3832
|
||||
relay.trustroots.org,43.6532,-79.3832
|
||||
wot.dtonon.com,43.6532,-79.3832
|
||||
nostr.camalolo.com,24.1469,120.684
|
||||
czas.xyz,48.8566,2.35222
|
||||
relayrs.notoshi.win,43.6532,-79.3832
|
||||
skeme.vanderwarker.family,40.8218,-74.45
|
||||
nostr.red5d.dev,43.6532,-79.3832
|
||||
relay.javi.space,43.4633,11.8796
|
||||
relay.nuts.cash,34.0362,-118.443
|
||||
nostr.commonshub.brussels,49.4543,11.0746
|
||||
relay.artx.market,43.652,-79.3633
|
||||
satsage.xyz,37.3986,-121.964
|
||||
relay.nostx.io,43.6532,-79.3832
|
||||
shu02.shugur.net,21.4902,39.2246
|
||||
strfry.ymir.cloud,34.0965,-117.585
|
||||
relay.nostr-check.me,43.6532,-79.3832
|
||||
relay04.lnfi.network,39.0997,-94.5786
|
||||
kotukonostr.onrender.com,37.7775,-122.397
|
||||
nostr.davidebtc.me,51.5072,-0.127586
|
||||
relay2.ngengine.org,43.6532,-79.3832
|
||||
ribo.us.nostria.app,41.5868,-93.625
|
||||
nostr.czas.top,50.1109,8.68213
|
||||
relay.nostrzh.org,43.6532,-79.3832
|
||||
relay.angor.io,48.1046,11.6002
|
||||
alienos.libretechsystems.xyz,55.4724,9.87335
|
||||
vault.iris.to,43.6532,-79.3832
|
||||
relay.mccormick.cx,52.3563,4.95714
|
||||
nostr.quali.chat,60.1699,24.9384
|
||||
wheat.happytavern.co,43.6532,-79.3832
|
||||
relay.olas.app,50.4754,12.3683
|
||||
nostr-relayrs.gateway.in.th,15.2634,100.344
|
||||
relay.snort.social,53.3498,-6.26031
|
||||
nostr-2.21crypto.ch,47.5356,8.73209
|
||||
pyramid.treegaze.com,43.6532,-79.3832
|
||||
relay.smies.me,33.7501,-84.3885
|
||||
wot.dergigi.com,64.1476,-21.9392
|
||||
nostr-relay.zimage.com,34.0549,-118.243
|
||||
nostr-rs-relay.dev.fedibtc.com,39.0438,-77.4874
|
||||
nostr.jerrynya.fun,31.2304,121.474
|
||||
purplerelay.com,50.1109,8.68213
|
||||
relay.comcomponent.com,34.7062,135.493
|
||||
relay.unitypay.cash,41.4513,-81.7021
|
||||
nostr.mikoshi.de,50.1109,8.68213
|
||||
prl.plus,42.6978,23.3246
|
||||
shu04.shugur.net,25.2604,55.2989
|
||||
nostr-relay-1.trustlessenterprise.com,43.6532,-79.3832
|
||||
nostr.zoracle.org,45.6018,-121.185
|
||||
nostriches.club,43.6532,-79.3832
|
||||
nostr.notribe.net,40.8302,-74.1299
|
||||
nostr.vulpem.com,49.4543,11.0746
|
||||
bucket.coracle.social,37.7775,-122.397
|
||||
wot.yesnostr.net,50.9871,2.12554
|
||||
wot.nostr.place,32.7767,-96.797
|
||||
nostr.mehdibekhtaoui.com,49.4939,-1.54813
|
||||
relay.getsafebox.app,43.6532,-79.3832
|
||||
nostr2.girino.org,43.6532,-79.3832
|
||||
nostr.blankfors.se,60.1699,24.9384
|
||||
premium.primal.net,43.6532,-79.3832
|
||||
nostr.rikmeijer.nl,50.4754,12.3683
|
||||
relay-fra.zombi.cloudrodion.com,48.8566,2.35222
|
||||
adre.su,59.9311,30.3609
|
||||
nostr.n7ekb.net,47.4941,-122.294
|
||||
nostr.hekster.org,37.3986,-121.964
|
||||
relay.jabato.space,52.52,13.405
|
||||
fenrir-s.notoshi.win,43.6532,-79.3832
|
||||
notemine.io,52.2026,20.9397
|
||||
r.bitcoinhold.net,43.6532,-79.3832
|
||||
nostr-pub.wellorder.net,45.5201,-122.99
|
||||
articles.layer3.news,37.3387,-121.885
|
||||
relays.diggoo.com,43.6532,-79.3832
|
||||
relayb.uid.ovh,43.6532,-79.3832
|
||||
nostr.thebiglake.org,32.71,-96.6745
|
||||
chat-relay.zap-work.com,43.6532,-79.3832
|
||||
nr.yay.so,46.2126,6.1154
|
||||
shu01.shugur.net,21.4902,39.2246
|
||||
khatru.nostrver.se,51.1792,5.89444
|
||||
relay.openfarmtools.org,60.1699,24.9384
|
||||
relay01.lnfi.network,39.0997,-94.5786
|
||||
nostrja-kari.heguro.com,43.6532,-79.3832
|
||||
nostr.snowbla.de,60.1699,24.9384
|
||||
relay.satlantis.io,32.8769,-80.0114
|
||||
relay.vrtmrz.net,43.6532,-79.3832
|
||||
purpura.cloud,43.6532,-79.3832
|
||||
orangepiller.org,60.1699,24.9384
|
||||
relay.coinos.io,43.6532,-79.3832
|
||||
relay.layer.systems,49.0291,8.35695
|
||||
relay.toastr.net,40.8054,-74.0241
|
||||
ynostr.yael.at,60.1699,24.9384
|
||||
ribo.eu.nostria.app,52.3676,4.90414
|
||||
relay.nostrcheck.me,43.6532,-79.3832
|
||||
relay.primal.net,43.6532,-79.3832
|
||||
relay-testnet.k8s.layer3.news,37.3387,-121.885
|
||||
relay.threenine.services,51.5524,-0.29686
|
||||
relay.nostr.net,43.6532,-79.3832
|
||||
nostr.middling.mydns.jp,35.8099,140.12
|
||||
soloco.nl,43.6532,-79.3832
|
||||
nostr.4rs.nl,49.0291,8.35696
|
||||
no.str.cr,9.92857,-84.0528
|
||||
espelho.girino.org,43.6532,-79.3832
|
||||
nostr.hifish.org,47.4043,8.57398
|
||||
wot.sebastix.social,51.1792,5.89444
|
||||
relay03.lnfi.network,39.0997,-94.5786
|
||||
relay.nosto.re,51.1792,5.89444
|
||||
relay.nostrdice.com,-33.8688,151.209
|
||||
nostr.agentcampfire.com,52.3676,4.90414
|
||||
nostr.night7.space,50.4754,12.3683
|
||||
nostr.nodesmap.com,59.3327,18.0656
|
||||
relayone.soundhsa.com,33.1384,-95.6011
|
||||
relay.illuminodes.com,47.6061,-122.333
|
||||
nostr-rs-relay-ishosta.phamthanh.me,43.6532,-79.3832
|
||||
nostr.robosats.org,64.1476,-21.9392
|
||||
relay.seq1.net,43.6532,-79.3832
|
||||
strfry.shock.network,39.0438,-77.4874
|
||||
nostr.ovia.to,43.6532,-79.3832
|
||||
relay.holzeis.me,43.6532,-79.3832
|
||||
bcast.seutoba.com.br,43.6532,-79.3832
|
||||
relay.libernet.app,43.6532,-79.3832
|
||||
nostr-01.uid.ovh,43.6532,-79.3832
|
||||
nostr.luisschwab.net,43.6532,-79.3832
|
||||
strfry.elswa-dev.online,50.1109,8.68213
|
||||
relay.nostriot.com,41.5695,-83.9786
|
||||
nostr.oxtr.dev,50.4754,12.3683
|
||||
nostr.mom,50.4754,12.3683
|
||||
nostr-03.dorafactory.org,1.35208,103.82
|
||||
relay.camelus.app,45.5201,-122.99
|
||||
strfry.openhoofd.nl,51.9229,4.40833
|
||||
nos.lol,50.4754,12.3683
|
||||
nostr.bitcoiner.social,39.1585,-94.5728
|
||||
relay.islandbitcoin.com,12.8498,77.6545
|
||||
relay.tagayasu.xyz,43.6715,-79.38
|
||||
dev-nostr.bityacht.io,25.0797,121.234
|
||||
relay.nostrhub.fr,48.1045,11.6004
|
||||
relay.satmaxt.xyz,43.6532,-79.3832
|
||||
yabu.me,35.6092,139.73
|
||||
relay.samt.st,40.8302,-74.1299
|
||||
relay02.lnfi.network,39.0997,-94.5786
|
||||
nostr.88mph.life,51.5072,-0.127586
|
||||
dev-relay.lnfi.network,39.0997,-94.5786
|
||||
relay.goodmorningbitcoin.com,43.6532,-79.3832
|
||||
nostrelay.memory-art.xyz,43.6532,-79.3832
|
||||
relay.degmods.com,50.4754,12.3683
|
||||
nostr-02.yakihonne.com,1.32123,103.695
|
||||
nostr.spicyz.io,43.6532,-79.3832
|
||||
relay.minibolt.info,43.6532,-79.3832
|
||||
bcast.girino.org,43.6532,-79.3832
|
||||
nostr.bilthon.dev,25.8128,-80.2377
|
||||
relay.bitcoinartclock.com,50.4754,12.3683
|
||||
cyberspace.nostr1.com,40.7128,-74.006
|
||||
nostr.data.haus,50.4754,12.3683
|
||||
relay.agora.social,50.7383,15.0648
|
||||
relay.wavefunc.live,34.0362,-118.443
|
||||
nostr.casa21.space,43.6532,-79.3832
|
||||
relay.mostro.network,40.8302,-74.1299
|
||||
relay.ditto.pub,43.6532,-79.3832
|
||||
nostr-relay.amethyst.name,39.0438,-77.4874
|
||||
relay.credenso.cafe,43.3601,-80.3127
|
||||
nostr.calitabby.net,39.9268,-75.0246
|
||||
relay.magiccity.live,25.8128,-80.2377
|
||||
nostr.chaima.info,51.223,6.78245
|
||||
wot.brightbolt.net,47.6735,-116.781
|
||||
nostr.sathoarder.com,48.5734,7.75211
|
||||
inbox.azzamo.net,52.2633,21.0283
|
||||
nostr.na.social,43.6532,-79.3832
|
||||
nostr.myshosholoza.co.za,52.3676,4.90414
|
||||
nostr.spaceshell.xyz,43.6532,-79.3832
|
||||
relay.wellorder.net,45.5201,-122.99
|
||||
nostr.0x7e.xyz,47.4988,8.72369
|
||||
nostr-relay.cbrx.io,43.6532,-79.3832
|
||||
relay.btcforplebs.com,43.6532,-79.3832
|
||||
bitcoiner.social,39.1585,-94.5728
|
||||
relaynostr.breadslice.com,43.6532,-79.3832
|
||||
nostr.overmind.lol,43.6532,-79.3832
|
||||
santo.iguanatech.net,40.8302,-74.1299
|
||||
relay.lightning.pub,39.0438,-77.4874
|
||||
nostr.rblb.it,43.7094,10.6582
|
||||
relay.bitcoinveneto.org,64.1466,-21.9426
|
||||
relay.wolfcoil.com,35.6092,139.73
|
||||
nostr-relay.corb.net,38.8353,-104.822
|
||||
relay.nostr.place,32.7767,-96.797
|
||||
wot.soundhsa.com,33.1384,-95.6011
|
||||
relay.npubhaus.com,43.6532,-79.3832
|
||||
nostr-relay.psfoundation.info,39.0438,-77.4874
|
||||
x.kojira.io,43.6532,-79.3832
|
||||
relay.cypherflow.ai,48.8566,2.35222
|
||||
|
||||
|
@@ -64,15 +64,46 @@ class MainActivity : OrientationAwareActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private val forceFinishReceiver = object : android.content.BroadcastReceiver() {
|
||||
override fun onReceive(context: android.content.Context, intent: android.content.Intent) {
|
||||
if (intent.action == com.bitchat.android.util.AppConstants.UI.ACTION_FORCE_FINISH) {
|
||||
android.util.Log.i("MainActivity", "Received force finish broadcast, closing UI")
|
||||
finishAffinity()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
// Register receiver for force finish signal from shutdown coordinator
|
||||
val filter = android.content.IntentFilter(com.bitchat.android.util.AppConstants.UI.ACTION_FORCE_FINISH)
|
||||
if (android.os.Build.VERSION.SDK_INT >= 33) {
|
||||
registerReceiver(
|
||||
forceFinishReceiver,
|
||||
filter,
|
||||
com.bitchat.android.util.AppConstants.UI.PERMISSION_FORCE_FINISH,
|
||||
null,
|
||||
android.content.Context.RECEIVER_NOT_EXPORTED
|
||||
)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
registerReceiver(
|
||||
forceFinishReceiver,
|
||||
filter,
|
||||
com.bitchat.android.util.AppConstants.UI.PERMISSION_FORCE_FINISH,
|
||||
null
|
||||
)
|
||||
}
|
||||
|
||||
// Check if this is a quit request from the notification
|
||||
if (intent.getBooleanExtra("ACTION_QUIT_APP", false)) {
|
||||
android.util.Log.d("MainActivity", "Quit request received in onCreate, finishing activity")
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
com.bitchat.android.service.AppShutdownCoordinator.cancelPendingShutdown()
|
||||
|
||||
// Enable edge-to-edge display for modern Android look
|
||||
enableEdgeToEdge()
|
||||
@@ -648,6 +679,8 @@ class MainActivity : OrientationAwareActivity() {
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
com.bitchat.android.service.AppShutdownCoordinator.cancelPendingShutdown()
|
||||
|
||||
// Handle notification intents when app is already running
|
||||
if (mainViewModel.onboardingState.value == OnboardingState.COMPLETE) {
|
||||
@@ -773,6 +806,8 @@ class MainActivity : OrientationAwareActivity() {
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
try { unregisterReceiver(forceFinishReceiver) } catch (_: Exception) { }
|
||||
|
||||
// Cleanup location status manager
|
||||
try {
|
||||
locationStatusManager.cleanup()
|
||||
|
||||
@@ -9,10 +9,13 @@ import com.bitchat.android.net.TorMode
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
|
||||
/**
|
||||
* Coordinates a full application shutdown:
|
||||
@@ -24,6 +27,15 @@ import kotlinx.coroutines.withTimeoutOrNull
|
||||
*/
|
||||
object AppShutdownCoordinator {
|
||||
private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())
|
||||
private val shutdownToken = AtomicLong(0L)
|
||||
@Volatile
|
||||
private var shutdownJob: Job? = null
|
||||
|
||||
fun cancelPendingShutdown() {
|
||||
shutdownToken.incrementAndGet()
|
||||
shutdownJob?.cancel()
|
||||
shutdownJob = null
|
||||
}
|
||||
|
||||
fun requestFullShutdownAndKill(
|
||||
app: Application,
|
||||
@@ -32,7 +44,16 @@ object AppShutdownCoordinator {
|
||||
stopForeground: () -> Unit,
|
||||
stopService: () -> Unit
|
||||
) {
|
||||
scope.launch {
|
||||
val token = shutdownToken.incrementAndGet()
|
||||
shutdownJob?.cancel()
|
||||
val job = scope.launch {
|
||||
// Signal UI to finish gracefully before we kill the process
|
||||
try {
|
||||
val intent = android.content.Intent(com.bitchat.android.util.AppConstants.UI.ACTION_FORCE_FINISH)
|
||||
.setPackage(app.packageName)
|
||||
app.sendBroadcast(intent, com.bitchat.android.util.AppConstants.UI.PERMISSION_FORCE_FINISH)
|
||||
} catch (_: Exception) { }
|
||||
|
||||
// Stop mesh (best-effort)
|
||||
try { mesh?.stopServices() } catch (_: Exception) { }
|
||||
|
||||
@@ -56,12 +77,19 @@ object AppShutdownCoordinator {
|
||||
}
|
||||
|
||||
// Stop the service itself
|
||||
if (!isActive || shutdownToken.get() != token) return@launch
|
||||
try { stopService() } catch (_: Exception) { }
|
||||
|
||||
// Hard kill the app process
|
||||
if (!isActive || shutdownToken.get() != token) return@launch
|
||||
try { Process.killProcess(Process.myPid()) } catch (_: Exception) { }
|
||||
try { System.exit(0) } catch (_: Exception) { }
|
||||
}
|
||||
shutdownJob = job
|
||||
job.invokeOnCompletion {
|
||||
if (shutdownJob === job) {
|
||||
shutdownJob = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@ class MeshForegroundService : Service() {
|
||||
private val serviceJob = Job()
|
||||
private val scope = CoroutineScope(Dispatchers.Default + serviceJob)
|
||||
private var isInForeground: Boolean = false
|
||||
private var isShuttingDown: Boolean = false
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
@@ -133,6 +134,13 @@ class MeshForegroundService : Service() {
|
||||
}
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
if (isShuttingDown && intent?.action == ACTION_START) {
|
||||
AppShutdownCoordinator.cancelPendingShutdown()
|
||||
isShuttingDown = false
|
||||
}
|
||||
if (isShuttingDown && intent?.action != ACTION_QUIT) {
|
||||
return START_NOT_STICKY
|
||||
}
|
||||
when (intent?.action) {
|
||||
ACTION_STOP -> {
|
||||
// Stop FGS and mesh cleanly
|
||||
@@ -145,6 +153,12 @@ class MeshForegroundService : Service() {
|
||||
return START_NOT_STICKY
|
||||
}
|
||||
ACTION_QUIT -> {
|
||||
isShuttingDown = true
|
||||
updateJob?.cancel()
|
||||
updateJob = null
|
||||
try { stopForeground(true) } catch (_: Exception) { }
|
||||
notificationManager.cancel(NOTIFICATION_ID)
|
||||
isInForeground = false
|
||||
// Fully stop all background activity, stop Tor (without changing setting), then kill the app
|
||||
AppShutdownCoordinator.requestFullShutdownAndKill(
|
||||
app = application,
|
||||
@@ -208,6 +222,7 @@ class MeshForegroundService : Service() {
|
||||
}
|
||||
|
||||
private fun ensureMeshStarted() {
|
||||
if (isShuttingDown) return
|
||||
if (!hasBluetoothPermissions()) return
|
||||
try {
|
||||
android.util.Log.d("MeshForegroundService", "Ensuring mesh service is started")
|
||||
@@ -218,6 +233,10 @@ class MeshForegroundService : Service() {
|
||||
}
|
||||
|
||||
private fun updateNotification(force: Boolean) {
|
||||
if (isShuttingDown) {
|
||||
notificationManager.cancel(NOTIFICATION_ID)
|
||||
return
|
||||
}
|
||||
val count = meshService?.getActivePeerCount() ?: 0
|
||||
val notification = buildNotification(count)
|
||||
if (MeshServicePreferences.isBackgroundEnabled(true) && hasAllRequiredPermissions()) {
|
||||
@@ -257,7 +276,7 @@ class MeshForegroundService : Service() {
|
||||
} else true
|
||||
}
|
||||
|
||||
private fun buildNotification(activeUsers: Int): Notification {
|
||||
private fun buildNotification(activePeers: Int): Notification {
|
||||
val openIntent = Intent(this, MainActivity::class.java)
|
||||
val pendingIntent = PendingIntent.getActivity(
|
||||
this, 0, openIntent,
|
||||
@@ -272,7 +291,7 @@ class MeshForegroundService : Service() {
|
||||
)
|
||||
|
||||
val title = getString(R.string.app_name)
|
||||
val content = getString(R.string.mesh_service_notification_content, activeUsers)
|
||||
val content = getString(R.string.mesh_service_notification_content, activePeers)
|
||||
|
||||
return NotificationCompat.Builder(this, CHANNEL_ID)
|
||||
.setContentTitle(title)
|
||||
|
||||
@@ -119,6 +119,8 @@ object AppConstants {
|
||||
const val MESSAGE_DEDUP_TIMEOUT_MS: Long = 30_000L
|
||||
const val SYSTEM_EVENT_DEDUP_TIMEOUT_MS: Long = 5_000L
|
||||
const val ACTIVE_PEERS_NOTIFICATION_INTERVAL_MS: Long = 300_000L
|
||||
const val ACTION_FORCE_FINISH: String = "com.bitchat.android.ACTION_FORCE_FINISH"
|
||||
const val PERMISSION_FORCE_FINISH: String = "com.bitchat.android.permission.FORCE_FINISH"
|
||||
}
|
||||
|
||||
object Media {
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">كن أول من يضيف ملاحظة لهذا المكان.</string>
|
||||
<string name="dismiss">إغلاق</string>
|
||||
<string name="location_notes_input_placeholder">أضف ملاحظة لهذا المكان</string>
|
||||
<string name="mesh_service_notification_content">الشبكة تعمل — %1$d أقران</string>
|
||||
</resources>
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d জন</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">মেশ চলছে — %1$d পিয়ার</string>
|
||||
</resources>
|
||||
|
||||
@@ -363,4 +363,5 @@
|
||||
<string name="location_notes_empty_desc">sei der Erste, der hier eine Notiz hinterlässt.</string>
|
||||
<string name="dismiss">schließen</string>
|
||||
<string name="location_notes_input_placeholder">füge eine Notiz zu diesem Ort hinzu</string>
|
||||
<string name="mesh_service_notification_content">Mesh läuft — %1$d Peers</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">sé el primero en añadir una para este sitio.</string>
|
||||
<string name="dismiss">cerrar</string>
|
||||
<string name="location_notes_input_placeholder">agrega una nota para este lugar</string>
|
||||
<string name="mesh_service_notification_content">Mesh en ejecución — %1$d pares</string>
|
||||
</resources>
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d نفر</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">مش در حال اجرا — %1$d همتا</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<item quantity="other">%d tao</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">Tumatakbo ang Mesh — %1$d na peer</string>
|
||||
</resources>
|
||||
|
||||
@@ -376,4 +376,5 @@
|
||||
<string name="location_notes_empty_desc">soyez le premier à en ajouter pour cet endroit.</string>
|
||||
<string name="dismiss">fermer</string>
|
||||
<string name="location_notes_input_placeholder">ajoutez une note pour cet endroit</string>
|
||||
<string name="mesh_service_notification_content">Mesh actif — %1$d pairs</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
<string name="location_notes_empty_desc">היה הראשון להוסיף הערה למקום זה.</string>
|
||||
<string name="dismiss">סגור</string>
|
||||
<string name="location_notes_input_placeholder">הוסף הערה למקום זה</string>
|
||||
<string name="mesh_service_notification_content">רשת Mesh פועלת — %1$d עמיתים</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">इस स्थान के लिए पहला नोट जोड़ें।</string>
|
||||
<string name="dismiss">बंद करें</string>
|
||||
<string name="location_notes_input_placeholder">इस स्थान के लिए एक नोट जोड़ें</string>
|
||||
<string name="mesh_service_notification_content">मेश चल रहा है — %1$d पीयर्स</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">jadilah yang pertama menambahkan catatan untuk tempat ini.</string>
|
||||
<string name="dismiss">tutup</string>
|
||||
<string name="location_notes_input_placeholder">tambahkan catatan untuk tempat ini</string>
|
||||
<string name="mesh_service_notification_content">Mesh berjalan — %1$d peer</string>
|
||||
</resources>
|
||||
|
||||
@@ -396,4 +396,5 @@
|
||||
<string name="location_notes_empty_desc">sii il primo ad aggiungerne una per questo posto.</string>
|
||||
<string name="dismiss">chiudi</string>
|
||||
<string name="location_notes_input_placeholder">aggiungi una nota per questo luogo</string>
|
||||
<string name="mesh_service_notification_content">Mesh in esecuzione — %1$d peer</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">この場所の最初のメモを追加しましょう。</string>
|
||||
<string name="dismiss">閉じる</string>
|
||||
<string name="location_notes_input_placeholder">この場所へのメモを追加</string>
|
||||
<string name="mesh_service_notification_content">メッシュ実行中 — %1$d ピア</string>
|
||||
</resources>
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d ადამიანი</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">Mesh გაშვებულია — %1$d პირები</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">이 장소에 첫 번째 노트를 추가해 보세요.</string>
|
||||
<string name="dismiss">닫기</string>
|
||||
<string name="location_notes_input_placeholder">이 장소에 노트 추가</string>
|
||||
<string name="mesh_service_notification_content">메시 실행 중 — %1$d 피어</string>
|
||||
</resources>
|
||||
|
||||
@@ -376,4 +376,5 @@
|
||||
<item quantity="other">Olona %d</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">Mandeha ny Mesh — %1$d peers</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- TODO: Malay translations -->
|
||||
<string name="mesh_service_notification_content">Mesh sedang berjalan — %1$d rakan</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<item quantity="other">%d जना</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">मेश चलिरहेको छ — %1$d पियर्स</string>
|
||||
</resources>
|
||||
|
||||
@@ -394,4 +394,5 @@
|
||||
<string name="location_notes_empty_desc">wees de eerste die een notitie voor deze plek toevoegt.</string>
|
||||
<string name="dismiss">sluiten</string>
|
||||
<string name="location_notes_input_placeholder">voeg een notitie toe voor deze plek</string>
|
||||
<string name="mesh_service_notification_content">Mesh actief — %1$d peers</string>
|
||||
</resources>
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d بندے</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">میش چل رہا ہے — %1$d ساتھی</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
<string name="location_notes_empty_desc">bądź pierwszy, który doda notatkę dla tego miejsca.</string>
|
||||
<string name="dismiss">zamknij</string>
|
||||
<string name="location_notes_input_placeholder">dodaj notatkę dla tego miejsca</string>
|
||||
<string name="mesh_service_notification_content">Mesh działa — %1$d peerów</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">seja o primeiro a adicionar uma para este local.</string>
|
||||
<string name="dismiss">fechar</string>
|
||||
<string name="location_notes_input_placeholder">adicione uma nota para este local</string>
|
||||
<string name="mesh_service_notification_content">Mesh rodando — %1$d pares</string>
|
||||
</resources>
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">seja o primeiro a adicionar uma para este local.</string>
|
||||
<string name="dismiss">fechar</string>
|
||||
<string name="location_notes_input_placeholder">adicione uma nota para este local</string>
|
||||
<string name="mesh_service_notification_content">Mesh em execução — %1$d pares</string>
|
||||
</resources>
|
||||
|
||||
@@ -352,4 +352,5 @@
|
||||
<string name="location_notes_empty_desc">станьте первым, кто добавит заметку для этого места.</string>
|
||||
<string name="dismiss">закрыть</string>
|
||||
<string name="location_notes_input_placeholder">добавьте заметку для этого места</string>
|
||||
<string name="mesh_service_notification_content">Mesh запущен — %1$d пиров</string>
|
||||
</resources>
|
||||
|
||||
@@ -350,4 +350,5 @@
|
||||
<string name="location_notes_empty_desc">var först med att lägga till en anteckning för den här platsen.</string>
|
||||
<string name="dismiss">stäng</string>
|
||||
<string name="location_notes_input_placeholder">lägg till en anteckning för den här platsen</string>
|
||||
<string name="mesh_service_notification_content">Mesh körs — %1$d peers</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- TODO: Tamil translations -->
|
||||
<string name="mesh_service_notification_content">மெஷ் இயங்குகிறது — %1$d பியர்ஸ்</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d คน</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">Mesh กำลังทำงาน — %1$d เพื่อน</string>
|
||||
</resources>
|
||||
|
||||
@@ -350,4 +350,5 @@
|
||||
<string name="location_notes_empty_desc">bu yer için ilk notu ekleyen siz olun.</string>
|
||||
<string name="dismiss">kapat</string>
|
||||
<string name="location_notes_input_placeholder">bu yer için bir not ekleyin</string>
|
||||
<string name="mesh_service_notification_content">Mesh çalışıyor — %1$d eş</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- TODO: Ukrainian translations -->
|
||||
<string name="mesh_service_notification_content">Mesh працює — %1$d пірів</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -362,4 +362,5 @@
|
||||
<string name="location_notes_empty_desc">اس جگہ کے لیے پہلا نوٹ شامل کریں۔</string>
|
||||
<string name="dismiss">بند کریں</string>
|
||||
<string name="location_notes_input_placeholder">اس جگہ کے لیے ایک نوٹ شامل کریں</string>
|
||||
<string name="mesh_service_notification_content">میش چل رہا ہے — %1$d ساتھی</string>
|
||||
</resources>
|
||||
|
||||
@@ -349,4 +349,5 @@
|
||||
<item quantity="other">%d người</item>
|
||||
</plurals>
|
||||
|
||||
<string name="mesh_service_notification_content">Mesh đang chạy — %1$d ngang hàng</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
<string name="location_notes_empty_desc">成为第一个为此地点添加笔记的人。</string>
|
||||
<string name="dismiss">关闭</string>
|
||||
<string name="location_notes_input_placeholder">为此地点添加一条笔记</string>
|
||||
<string name="mesh_service_notification_content">Mesh 运行中 — %1$d 个节点</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
<string name="location_notes_empty_desc">成為第一個為此地點新增筆記的人。</string>
|
||||
<string name="dismiss">關閉</string>
|
||||
<string name="location_notes_input_placeholder">為此地點新增一則筆記</string>
|
||||
<string name="mesh_service_notification_content">Mesh 運行中 — %1$d 個節點</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -375,4 +375,5 @@
|
||||
<string name="location_notes_empty_desc">成为第一个为此地点添加笔记的人。</string>
|
||||
<string name="dismiss">关闭</string>
|
||||
<string name="location_notes_input_placeholder">为此地点添加一条笔记</string>
|
||||
<string name="mesh_service_notification_content">Mesh 运行中 — %1$d 个节点</string>
|
||||
</resources>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<!-- Mesh Service Foreground Notification -->
|
||||
<string name="mesh_service_channel_name">Mesh Background Service</string>
|
||||
<string name="mesh_service_channel_desc">Keeps the Bluetooth mesh running in the background</string>
|
||||
<string name="mesh_service_notification_content">Mesh running — %1$d users connected</string>
|
||||
<string name="mesh_service_notification_content">Mesh running — %1$d peers</string>
|
||||
|
||||
<!-- Favorites accessibility -->
|
||||
<string name="cd_add_favorite">Add to favorites</string>
|
||||
|
||||
@@ -8,12 +8,14 @@ import org.junit.Assert.assertNotNull
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.ConscryptMode
|
||||
import java.io.File
|
||||
import java.nio.ByteBuffer
|
||||
import java.nio.ByteOrder
|
||||
import java.util.Date
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@ConscryptMode(ConscryptMode.Mode.OFF) // Disable Conscrypt to avoid native library loading issues
|
||||
class FileTransferTest {
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user