02 Feb 2023

feedPlanet Maemo

Rekomendasi Game Judi Online Casino Mudah Menang

Setiap pemain yang menargetkan kemenangan di dalam permainan judi online Kasino harus tahu tentang game yang bisa dimainkan. Saat ini pilihan game yang tersedia dan ditawarkan serta bisa dimainkan memang banyak sekali pilihannya. Namun meski demikian anda disarankan untuk bisa hanya fokus mencari pilihan game yang mudah dimenangkan. Biasanya memang permainan kasino tersebut banyak sekali peminat dan penggunanya sehingga Anda bisa meyakinkan diri bahwa bermain game tersebut akan memudahkan anda untuk menang dengan mudah.

Kemenangan mudah dan keuntungan besar dalam sebuah permainan taruhan judi akan sangat bergantung pada beberapa teknik dan strategi yang Anda gunakan. Dalam hal ini penting juga untuk anda cari tahu terlebih dahulu trik dan strategi yang nantinya akan anda gunakan. Tapi di samping itu sebelumnya penting untuk cari tahu terlebih dahulu beberapa koleksi dan pilihan permainan yang populer. Anda bisa mencoba dan memilih serta memainkan salah satu pilihan game maju dia memang paling populer dan paling banyak peminat dan penggunanya.

Data Rekomendasi Game Judi Online Casino Mudah Menang

Saat ini rekomendasi pilihan permainan judi casino yang bisa dimainkan memang banyak sekali dan disarankan untuk Anda memilih pilihan game yang mudah menang. Permainan slot yang mudah untuk dimenangkan adalah pilihan terbaik yang recommended untuk dipilih karena itu akan memudahkan untuk anda segera balik modal. Maka dari itu coba pelajari dan juga cari tahu beberapa pilihan game Mbak judi online Kasino yang selama ini memang nggak banyak sekali peminatnya. Anda bisa memilih dan memainkan salah satu dari beberapa pilihan permainan berikut yang memang terbukti bagus dan bisa digunakan.

  1. Sicbo - Permainan dadu yang satu ini juga merupakan salah satu pilihan permainan yang populer di Indonesia karena memang permainan ini memiliki keseruan di mana kita bermain dengan 3 buah dadu. Kemudian selanjutnya kita diharuskan untuk menebak berapa mata dadu yang akan muncul setelah kita lempar.
  2. Dragon Tiger - Kemudian jenis permainan selanjutnya yang populer adalah permainan Dragon Tiger yang merupakan permainan yang cukup unik dan menarik dimana kita ada 2 buah yakni Dragon dan tiger. Permainan ini memiliki daya tarik serta memiliki keunikan yang membuat banyak orang memainkan permainan itu.
  3. Casino Holdem Poker - Ini juga permainan kartu yang memang cukup populer di Indonesia yang tersedia dalam Casino Online sehingga layak untuk Anda coba mainkan. Permainan ini memungkinkan anda untuk bisa mengasah skill dan insting serta keseruan serta tantangan juga.
  4. Blackjack- game judi online blackjack juga merupakan pilihan terbaik yang recommended dan bagus untuk dipilih karena memang punya banyak penawaran menarik yang menguntungkan. Permainan ini sangatlah menarik dan juga memiliki sensasi klasik karena sudah ada sejak zaman dulu dan sampai sekarang masih menjadi pilihan yang Primadona dan banyak peminatnya.
  5. Bacarat - selanjutnya juga Anda bisa mencoba bermain permainan taruhan judi online bacarat. Sebagaimana diketahui bahwa permainan tersebut menjadi pilihan game terbaik yang menguntungkan yang akan bisa memberikan peluang dan penghasilan yang besar. Kesempatan terbaik untuk Anda bisa bermain permainan judi dengan sistem lain yang aman dan nyaman sekaligus juga terintegrasi.

Jadi pastikan agar supaya Anda bisa memilih dan memainkan salah satu pilihan game jadi terbaik dengan berbagai keuntungan terbesar. Pelajari dan juga cari tahu bagaimana cara bermain permainan taruhan judi dengan aman dan nyaman serta menguntungkan.

The post Rekomendasi Game Judi Online Casino Mudah Menang appeared first on VALERIOVALERIO.

0 Add to favourites0 Bury

02 Feb 2023 10:10am GMT

01 Feb 2023

feedPlanet Maemo

Apa Permainan Judi Online yang Populer di Indonesia?

Tahukah anda bahwa di Indonesia ada banyak sekali pilihan permainan judi online yang tersedia dan bisa anda mainkan. Anda sebetulnya bebas aja memilih permainan mana saja sesuai dengan yang anda mau makan sebaiknya Coba Anda cari manakah yang memang paling populer dan menguntungkan. Dengan cara begitu kita bisa menemukan dan mendapatkan salah satu pilihan permainan yang memang bisa memberikan kita dan membawa kita pada keberuntungan. Untuk bisa menemukan dan mendapatkan pilihan permainan yang seperti itu tentu kita harus melakukan pencarian sampai kemudian bisa menemukan salah satunya.

Memilih permainan casino yang populer tentu bisa menjadi salah satu cara dan langkah terbaik yang bisa kita lakukan. Kenapa demikian? Ya ketika memang permainan itu populer dan banyak dimainkan oleh banyak orang itu artinya memang ada banyak keuntungan dan kelebihan yang ditawarkan oleh permainan tersebut. Tidak akan menyesal jika bisa bergabung dan bermain di salah satu pilihan permainan yang populer. Justru akan ada banyak keuntungan dan kelebihan besar yang bisa kita peroleh dari keputusan kita bergabung di salah satu pilihan permainan yang populer.

Apa Saja Permainan Judi Online yang Populer di Indonesia?

Indonesia ada banyak sekali pilihan permainan casino yang tersedia dan bisa kita mainkan dan tentunya kita bisa memilih jenis permainan yang paling bagus dan paling populer. Dari banyak pilihan permainan yang ada, memang ada beberapa diantaranya yang sangat populer dan banyak diminati oleh banyak kalangan. Ketika memang ada banyak orang yang meminati untuk bermain itu juga bisa menjadi salah satu pilihan yang tepat. Apa saja Pilihan permainan yang banyak dimainkan itu? Beberapa diantaranya dan penjelasannya di bawah ini:

Beberapa permainan di atas juga di Indonesia masih banyak permainan judi Casino versi online lainnya yang tersedia dan bisa anda pilih dan mainkan. Segitunya untuk Anda bisa memilih dan memainkan permainan mana saja namun cobalah untuk Anda cek Apakah terbuat dari permainan itu dan bagaimana caranya agar Anda bisa mendapatkan keuntungan finansial dari permainan tersebut. Kamu itu harus dipikirkan dengan baik sebelum kita terjun ke dalam permainan itu agar kita berhasil memperoleh banyak penghasilan dan juga keseluruhan dan kesenangan dari Casino Online itu. Selamat mencoba dan selamat memainkan salah satu atau beberapa permainan yang tersedia.

The post Apa Permainan Judi Online yang Populer di Indonesia? appeared first on VALERIOVALERIO.

0 Add to favourites0 Bury

01 Feb 2023 10:08am GMT

31 Jan 2023

feedPlanet Maemo

Strategi Bermain Judi Online Agar Mudah Menang

Memilih permainan taruhan memang harus dipikirkan dengan baik dan benar dan tidak boleh dilakukan dengan sembarangan. Kalaupun ada banyak koleksi permainan yang tersedia tetap kita harus bisa selektif memutuskan dan memilih salah satu pilihan yang paling tepat. Dengan cara demikian inilah yang kemudian akan memungkinkan dan memudahkan kita untuk bisa memperoleh kemenangan. Kita bisa mendapatkan dan memperoleh kemenangan lebih mudah dari permainan yang kita lakukan jika kita bisa bermain dengan cara yang tepat.

Kenapa membutuhkan strategi?

Permainan casino sebetulnya bukan sepenuhnya permainan yang harus mengandalkan yang namanya keberuntungan, akan tetapi kita harus bisa menguasai beragam strategi bermain agar bisa menang mudah dalam permainan itu. Makin banyak strategi bermain yang kita kuasai maka semakin besar pula peluang keuntungan yang bisa kita peroleh dan dapatkan. Oleh karena itu sebisa mungkin kita harus pelajari strategi bermain seperti apa yang harus kita gunakan. Dengan cara demikian ini bisa memungkinkan dan memudahkan kita untuk menang lebih mudah dan lebih seru. Bermain dengan strategi juga bisa memudahkan kita untuk bisa menggapai target yang ingin kita capai.

Strategi Bermain Judi Online Menang Terus

Bermain game judi online agar supaya bisa menang terus terkadang memang membutuhkan beberapa trik dan juga strategi yang jitu. Kita bisa coba pelajari dan cari tahu bagaimana sebetulnya trik yang bisa digunakan bergantung pada pilihan permainan. Misalnya Anda mau bermain permainan seperti slot pragmatic, joker 123 dan lain sebagainya, sebaiknya gunakan teknik dan strategi yang benar.

Jika anda sudah bisa memilih salah satu pilihan permen yang yang tepat, anda tinggal mainkan saja permainan itu dan kemudian Anda rasakan keseruan dari permainan tersebut.

Pilih game yang punya potensi menang tinggi

Cara yang paling mudah pertama sebetulnya adalah memilih game yang memiliki potensi kemenangan yang tinggi. Oleh karena itu anda perlu lakukan beberapa pencarian untuk bisa menemukan pilihan game tersebut. Saat ini banyak sekali pilihan yang tersedia dan bisa dipilih namun juga harus disadari bahwa tidak semua pilihan game memiliki tingkat RTP tinggi.

Menyiapkan modal yang besar

Setiap pemain yang mau menang dan untung banyak di dalam permainan game maju di online judi pasti disarankan untuk bisa memilih untuk menyiapkan modal yang cukup. Persiapan modal yang cukup akan mempengaruhi banyak hal termasuk juga mempengaruhi tingkat kemenangan dan besar keuntungan yang bisa didapatkan. Jadi sebisa mungkin Anda harus bisa siapkan modal yang cukup agar bisa memiliki kesempatan untuk bisa bermain dengan lebih banyak keuntungan besar di dalamnya.

Mempelajari celah kemenangan

Setiap permainan apapun itu juga pasti akan selalu ada celah kemenangan yang bisa kita pelajari. Jadi pastikan supaya Anda bisa belajar dan cari tahu apa saja dan bagaimana saja sebetulnya cara kemenangan yang bisa kita gunakan agar bisa mendapatkan keuntungan yang besar dan berkali Lipat. Bahkan Anda juga bisa coba belajar dari beberapa sumber di beberapa media untuk bisa mendapatkannya informasinya.

Akan tetapi bagi Anda yang memang masih pemula sangat disarankan untuk bisa mengetahui dengan baik bahwa memang ada beberapa cara dan strategi tertentu yang bisa anda gunakan. Ada beberapa panduan khusus mendasar dan Advance yang memang harus dipahami dengan baik. Hal itu bertujuan agar Kemudian Anda bisa memperoleh dan mendapatkan keuntungan besar dari permainan tersebut. Ini juga yang memudahkan anda untuk bisa berjalan dengan lancar dan mendapatkan potensi atau peluang kemenangan yang lebih besar lagi dari permainan tersebut.

The post Strategi Bermain Judi Online Agar Mudah Menang appeared first on VALERIOVALERIO.

0 Add to favourites0 Bury

31 Jan 2023 10:08am GMT

24 Jan 2023

feedAndroid Developers Blog

Control when changes to your app are sent for review with new Play Console features

Posted by Steve Suppe, Product Manager, Google Play and Manuel Wang, Product Manager, Google Play; Ashley Marshall, UX Writing Lead, Google Play Google Play Console is constantly evolving to improve how you manage and publish your apps. We know that launch moments are really important to you. Whether that's launching a new version of your app, or updating your store listing - you need the right tools to help you launch with confidence.

One challenge you've shared with us is a lack of predictability and control over the app review process. Previously, it was hard to predict which changes would be sent to Google for review, and which changes would be published immediately. There was also no way to send multiple changes for review together, for example, if you wanted to update your app at the same time as one of your store listing screenshots.

As a result of your feedback, we're making some changes to give you more flexibility and control over the app review process.

Control when changes are sent to Google for review

On the Publishing overview page in Play Console, you'll soon see a new section called "Changes ready to send for review." Whenever you save a change in Play Console that is subject to review, it will be listed here - instead of it being automatically sent for review. You can then send these changes for review together, whenever you're ready.

ALT TEXT
On the Publishing overview page in Play Console, you'll soon see a new "Changes ready to send for review" section where your changes will be saved for you to send for review.

How this works with managed publishing

Once you send changes to Google for review, they'll appear in the "Changes in review" section on the Publishing overview page.

If you have managed publishing turned on, these changes will appear in the "Ready to publish" section as soon as they're approved. You can then publish these changes whenever you're ready.

If you have managed publishing turned off, changes will be published automatically as soon as they're approved. We recommend turning managed publishing on when you want more control over app changes or wish to push an app update live at a specific time.

Remove changes that are ready to publish or in review

To give you even more flexibility, we're also adding the ability for you to remove changes that have already been sent for review, or that are ready to publish.

Changes you remove will once again appear in the "Changes ready to send for review" section.

How it works

Here's an example of how we think these new changes will add predictability and control to your app publishing process, and how they will enable more flexible workflows.

Imagine you have a major update to your app that is due to go live and requires several changes to happen at the same time, such as publishing a new release, updating your store listing screenshots, and making changes to your Data safety form. Here's how this would look with all of the new improvements that we've made in Play Console.

1. Make changes to your app, store listing, and Data safety form in Play Console

You can make changes to all of the different parts of your app at your own pace, with confidence that these changes won't be sent for review or published until you're ready.

2. Send changes for review when you're ready

On the Publishing overview page, you'll now see all of the changes that have been made. You can send them for review together when you decide you're ready.

3. Remove changes if you've made a mistake

Imagine that you've made a change to something else by accident, or your marketing team has told you that some of the screenshots you originally uploaded need to be changed. On the Publishing overview page, you can now remove these changes from the review, make any necessary updates, and send the changes for review - again.

4. Publish according to your schedule with managed publishing

Plans change all the time. Imagine that your marketing team tells you that your launch date has been delayed by a week. Or, what if you don't want your changes to go live on a weekend, when no one is in the office? You can choose to turn on managed publishing and control exactly when approved changes are published.

We're really excited to share these upcoming features with you, and hope these changes give you more predictability and control over the app publishing process.


How useful did you find this blog post?



24 Jan 2023 6:00pm GMT

12 Jan 2023

feedAndroid Developers Blog

Android Studio Electric Eel

Posted by Paris Hsu, Product Manager, Android Developer

Android Studio Electric Eel splash screen

Today, we are ⚡️electrified⚡️ to announce the latest stable release of the official IDE for building Android applications: Android Studio Electric Eel (2022.1.1)!

This release includes updates and new features that cover across design, build & dependencies, emulators & devices, and IntelliJ. Read or watch below to learn more about how they can help you more productively build apps, and download the latest stable version today to try it out for yourself!

Design

Compose Preview updates automatically - In earlier versions of Android Studio, you had to manually refresh Compose Previews after making changes. In Electric Eel, Previews update automatically after you make compatible code changes in the same file, allowing you to iterate on your UI faster. If your code change was incompatible, Previews will show a "Needs Rebuild" status to indicate needing a full build. When your code contains compilation errors during editing, Previews are temporarily paused, and then resumed again when the errors are fixed.
Moving image of a screenshot of Compose Preview updating automatically
Compose Preview updates automatically
Compose Preview device spec - Another update for Compose Preview is that you can now edit the device parameter of the Preview annotation to specify the configuration of the device. You can choose from reference devices or create your own, in which case autocomplete will help you with what options are available and what values they accept. This works together nicely with multipreview annotations, which are available since Dolphin.
Screenshot of Compose preview device spec
Compose Preview Device Spec
Layout Inspector recomposition rendering highlights: To make it easier to quickly see which of your composables are recomposing, Layout inspector now highlights recomposition. This allows you to identify where in the application the most recent activity caused the highest changes in recomposition counts. The UI elements with the most recent changes are temporarily overlaid with a color. This makes it easy to track down unexpected or excessive recompositions happening in your app. You can learn more about using the layout inspector to debug recomposition in Jetpack Compose: Debugging Recomposition.
Moving image of screenshot showing Layout Inspector recomposition rendering highlights
Layout Inspector recomposition rendering highlights
Visual Linting for Views: New for XML layouts, Visual linting now runs in the background to check for issues across different form factors, detecting problems such as overlapping or non-visible elements on a given device configuration.

For example, in the animated screen capture below, you can see that the layout file has two validation problems: a TextView covered by an ImageView on certain screen sizes and an ImageView, which is partially out-of-bounds in some configurations. Clicking on the problem in the Problems panel will open the Layout Validation panel to see your layouts rendered for the various device sizes and highlight the configurations with the selected issue.
Moving image of screenshot showing Visual Linting for Views
Visual Linting for Views
Universal Problems Panel: We have consolidated all the problems reported by various tools within Android Studio into the new Problems panel. This includes visual linting, navigation, and Compose related issues.
Screenshot showing the universal problems panel
Universal Problems Panel

Build & Dependencies

Improved Sync performance with parallel project imports: Parts of Gradle Sync now run in parallel by default; this can result in significant speedups for very large projects. Square has reported that their Gradle Enterprise metrics show an average reduction of 60% in sync times, saving an estimated 1,600 hours in developer productivity per year. Note: These improvements are specific to the time it takes Gradle to build models and don't change the performance of the IDE's processing of those models.

Download impact in Build Analyzer: The Build Analyzer tool provides you insight into what happens during your builds. This now includes a summary of any dependency downloads that happened. You can use this information to determine the impact of downloads on your build, and to spot problems such as downloads happening during incremental builds.

The information of the download impact is broken down by repositories, so you can see where each dependency was downloaded from. You can also see if a repository takes a long time to serve artifacts, or has a high number of failed requests. If that's the case, you should consider removing the repository, if possible, or moving it lower in your repository configuration, so that other repositories take priority over it.
Moving image of Screenshot showing the build analyzer
Download impact in Build Analyzer
Upgrade Assistant post-upgrade report and rollback support: The Upgrade Assistant that helps you upgrade your project's Android Gradle Plugin version also got more helpful in Electric Eel. After performing a version upgrade, the assistant will attempt to sync your project, and report whether it was successful. It now also gives you a summary of what steps were executed. Moreover, if the project sync fails after the upgrade, you can use the new Revert button to undo the changes to your build files.
Moving image of Screenshot showing Upgrade Assistant post-upgrade report and rollback support
Upgrade Assistant post-upgrade report and rollback support
SDK Index integration: We announced Google Play SDK Index earlier this year, which provides you information about various SDKs that you can integrate into your app. SDK developers can mark versions of their SDKs as outdated in the SDK index, and this information is now shown directly in Android Studio.

If you're using a version marked as outdated, you'll see a lint warning on the dependency in your build file to let you know that you should update it. Similarly, the Project Structure Dialog will show the same warnings on the outdated dependencies, and you can navigate to their Play SDK Index page from there to learn more.
Moving image of Screenshot showing SDK Index integration
SDK Index integration

Baseline Profile fix for App Bundles: Under certain circumstances Baseline Profiles could have been compressed when the app was built as an Android App Bundle. This resulted in the profile not being picked up when installing the app locally. In this local only scenario, benchmark results would be slower than anticipated. The bundletool version shipping with Electric Eel addresses and fixes this problem.


Inspect

All-new Logcat: Logcat has been rewritten from the ground up to make it easier to parse, query, and track logs. The new Logcat UI has been available to try as an opt-in feature in Dolphin, and it's now enabled by default in Electric Eel, including a number of quality-of-life and stability fixes. Some highlights include better formatting for logs, a smarter search field with autocomplete support to filter for the logs you want to see, ability to persist log output across app restarts, and options to customize what's displayed.
Moving image of Screenshot showing Logcat New UI
Logcat New UI
App Quality Insights window: The new App Quality Insights tools let you browse and investigate crash data from Firebase Crashlytics directly in Android Studio without having to jump back and forth between the IDE and a browser.

The IDE displays your top issues, which you can filter to show only the most recent crashes, or crashes from a specific version of your app. For each issue, you can see the number of affected users and the stack trace, which allows you to quickly navigate to the place in your code where the crash occurred. Moreover, you'll see gutter icons in your source files, which indicate parts of your code that show up in your app's top crash reports. Simply click on the link to navigate from the code to the crash report in the App Quality Insights window. To get started, read the official documentation.
Moving image of Screenshot showing App Quality Insights window
App Quality Insights window

Emulators & devices

New "Desktop" category & Desktop AVD: In Electric Eel, you now have the option to create a Desktop emulator. This lets you test how your app behaves on devices such as Chromebooks. There are a handful of interactions that are different on these devices that you should test with your app. For example, apps can be freeform resized or minimized, which your app should handle gracefully.
Moving image of Screenshot showing Testing apps on new Desktop AVDs
Testing apps on new Desktop AVDs
Resizable Emulator (Experimental): The Resizable emulator helps you test your app on different screen sizes without having to run multiple emulators. After creating and launching a resizable emulator, you can use the Display Mode menu to switch between different reference device sizes and see how your app behaves.
Moving image of using the Resizable Emulator
Using the Resizable Emulator
Physical Devices Mirroring (Experimental, Opt-in): You can now mirror your physical device to Android Studio and interact with it similarly to how you'd use an emulator. This is an opt-in feature in Electric Eel so that you can share feedback with us. In order to use it, you need to first go to Preference > Experimental > Device Mirroring to enable it. Then, connect your physical device through ADB (either through wired or wireless), and it will show up in the Running Devices panel. Once mirrored, you can interact with it much like you're used to with emulators, such as multi-touch, physical buttons, and device rotation. Mouse and keyboard events are forwarded, and you can use the controls on the toolbar to input button presses, or to rotate the device.
You can also drag and drop files onto the mirrored device (just like on an emulator). If the file is an APK, it will be installed, which can be really useful for quickly testing a build. For other file types, the file will be copied to the device's Download folder.
Moving image of physical devices mirroring in Android Studio
Moving image of physical devices mirroring on Physical Device
Physical Devices Mirroring (Android Studio and Physical Deice)

IntelliJ

IntelliJ Platform Update - Android Studio Electric Eel (2022.1.1) includes the IntelliJ 2022.1 platform release, which has many new features such as Dependency Analyzer to facilitate dependency management and conflict resolution and the Notifications tool window that offers a new, streamlined way to receive notifications from the IDE. It also includes a number of other notable improvements that are covered here.

To recap, Android Studio Electric Eel (2022.1.1) includes these new enhancements & features:

Design

  • Compose Preview updates automatically
  • Compose Preview device spec
  • Layout Inspector recomposition rendering highlights
  • Visual Linting
  • Universal Problems panel

Build & dependencies

  • Improved Sync performance with parallel project imports
  • Download impact in Build Analyzer
  • Upgrade Assistant post-upgrade report and rollback support
  • SDK Index integration
  • Baseline Profile fix for App Bundles

Emulators & devices

  • New "Desktop" category & Desktop AVD
  • Resizable Emulator (Experimental)
  • Physical Devices Mirroring (Experimental, Opt-in)

IntelliJ

  • IntelliJ Platform 2022.1 Update

Check out the Android Studio release notes, Android Gradle plugin release notes, and the Android Emulator release notes for more details.

Download Studio Today!

It is a good time to download Android Studio Electric Eel (2022.1.1) to incorporate the new features into your workflow. As always, we appreciate any feedback on things you like and issues or features you would like to see. If you find a bug or issue, please file an issue and also check out known-issues. Remember to also follow us on Twitter, Medium, or YouTube for more Android Development updates!

12 Jan 2023 10:00pm GMT

09 Jan 2023

feedAndroid Developers Blog

Extending the Android SDK

Posted by Anton Hansson, Software EngineerAndroid 10 and higher support Modular System Components that allow us to expedite functional and security updates to the Android ecosystem outside of major API level releases and make new functionality backward compatible on already-released Android versions. These improvements help make development more flexible and broaden the reach for app developers. We've built a new Extension SDK framework for you to integrate with these APIs, and today, we're releasing the first public version of the Extension SDK (Extension Level 4).

Faster API and feature introductions

Having the ability to introduce new functionality outside of major API level releases allows faster innovations. As shared in a previous post, beginning this year we plan to roll out the initial Privacy Sandbox on Android Beta release to Android 13 devices. You can start using the Extension SDK to integrate your solutions with the AdServices APIs to prepare for limited production testing. Learn more on how to participate in the Privacy Sandbox Beta release, and set up your development environment with a test device or emulator.

Backward compatibility

Extension SDKs also allow us to extend the support of certain platform functionality to existing Android versions, increasing user reach. For example, the PhotoPicker APIs previously available only on API level 33 (Android T) and above are now also available all the way back to API level 30 (Android R) through the Extension SDK on devices with an R extension version of at least 2.
Moving image showing Photopicker API in action on a cellphone screen

Check for API availability

To help you identify extension API availability, we've added additional information to the API reference that indicates for which API levels and the minimum extension versions that the API is available. For example, the API reference for ACTION_PICK_IMAGES indicates its availability on "Android R Extensions version 2" and above.
Action_Pick_Images link Added in API level 33 Also in R Extensions 2
You can query the extension version at runtime in a similar way to how Build.VERSION.SDK_INT is commonly used to check for the Android version. For example, if you need to verify the availability of the PhotoPicker APIs, use the new API SdkExtensions.getExtensionVersion. For the R extensions, the version code (30) that corresponds to R is used:
fun isPhotoPickerAvailable(): Boolean { return SdkExtensions.getExtensionVersion(VERSION_CODES.R) >= 2 }

The alternative check, via Build.VERSION.SDK_INT, would look like this:

fun isPhotoPickerAvailable(): Boolean { return Build.VERSION.SDK_INT >= 33 }

This check is still safe and correct, but this function would return false on some devices where the API is now available. As a result, the SDK_INT check is not optimal, and the extension version check is a better way to check for API availability. All devices with SDK_INT >= 33 also have an R extension version of >= 2, but there are devices with SDK_INT < 33 with R extension versions >= 2.

Similarly, the AdServices API reference may indicate that it's "added in Ad Services Extensions 4". The Ad Services extension uses the SdkExtensions.AD_SERVICES constant. The availability check looks like this:

fun isAdServicesAvailable(): Boolean { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4 }

For developer convenience, we are extending Jetpack to make it easier to work with extension versions. For example, you can use a Jetpack library function to check for PhotoPicker availability, which abstracts away the conditional version checks. We expect to be releasing more Jetpack libraries (such as the Privacy Preserving APIs in the Privacy Sandbox) to aid the correct use of APIs released via Extension SDKs.

Tooling support

To help ensure app quality, we added Extension versions tooling support to Android Lint's NewApi check. Since Android Studio Flamingo, it can auto-generate the correct version checks for APIs that have been launched via SDK extensions. Using these new version checks is completely optional, but adopting them could help lead to more widespread use of new APIs when they exist.
Screen grab of version check in use

Get familiarized with SDK extensions

We're just beginning the SDK Extension developer journey and plan to make more features available in the future. You can get the latest SDK extension 4 available in the SDK Manager today. Learn more about the SDK Extensions and our documentation on the Privacy Sandbox Beta and the photo picker.

09 Jan 2023 7:00pm GMT

18 Sep 2022

feedPlanet Openmoko

Harald "LaF0rge" Welte: Deployment of future community TDMoIP hub

I've mentioned some of my various retronetworking projects in some past blog posts. One of those projects is Osmocom Community TDM over IP (OCTOI). During the past 5 or so months, we have been using a number of GPS-synchronized open source icE1usb interconnected by a new, efficient but strill transparent TDMoIP protocol in order to run a distributed TDM/PDH network. This network is currently only used to provide ISDN services to retronetworking enthusiasts, but other uses like frame relay have also been validated.

So far, the central hub of this OCTOI network has been operating in the basement of my home, behind a consumer-grade DOCSIS cable modem connection. Given that TDMoIP is relatively sensitive to packet loss, this has been sub-optimal.

Luckily some of my old friends at noris.net have agreed to host a new OCTOI hub free of charge in one of their ultra-reliable co-location data centres. I'm already hosting some other machines there for 20+ years, and noris.net is a good fit given that they were - in their early days as an ISP - the driving force in the early 90s behind one of the Linux kernel ISDN stracks called u-isdn. So after many decades, ISDN returns to them in a very different way.

Side note: In case you're curious, a reconstructed partial release history of the u-isdn code can be found on gitea.osmocom.org

But I digress. So today, there was the installation of this new OCTOI hub setup. It has been prepared for several weeks in advance, and the hub contains two circuit boards designed entirely only for this use case. The most difficult challenge was the fact that this data centre has no existing GPS RF distribution, and the roof is ~ 100m of CAT5 cable (no fiber!) away from the roof. So we faced the challenge of passing the 1PPS (1 pulse per second) signal reliably through several steps of lightning/over-voltage protection into the icE1usb whose internal GPS-DO serves as a grandmaster clock for the TDM network.

The equipment deployed in this installation currently contains:

For more details, see this wiki page and this ticket

Now that the physical deployment has been made, the next steps will be to migrate all the TDMoIP links from the existing user base over to the new hub. We hope the reliability and performance will be much better than behind DOCSIS.

In any case, this new setup for sure has a lot of capacity to connect many more more users to this network. At this point we can still only offer E1 PRI interfaces. I expect that at some point during the coming winter the project for remote TDMoIP BRI (S/T, S0-Bus) connectivity will become available.

Acknowledgements

I'd like to thank anyone helping this effort, specifically * Sylvain "tnt" Munaut for his work on the RS422 interface board (+ gateware/firmware) * noris.net for sponsoring the co-location * sysmocom for sponsoring the EPYC server hardware

18 Sep 2022 10:00pm GMT

08 Sep 2022

feedPlanet Openmoko

Harald "LaF0rge" Welte: Progress on the ITU-T V5 access network front

Almost one year after my post regarding first steps towards a V5 implementation, some friends and I were finally able to visit Wobcom, a small German city carrier and pick up a lot of decommissioned POTS/ISDN/PDH/SDH equipment, primarily V5 access networks.

This means that a number of retronetworking enthusiasts now have a chance to play with Siemens Fastlink, Nokia EKSOS and DeTeWe ALIAN access networks/multiplexers.

My primary interest is in Nokia EKSOS, which looks like an rather easy, low-complexity target. As one of the first steps, I took PCB photographs of the various modules/cards in the shelf, take note of the main chip designations and started to search for the related data sheets.

The results can be found in the Osmocom retronetworking wiki, with https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS being the main entry page, and sub-pages about

In short: Unsurprisingly, a lot of Infineon analog and digital ICs for the POTS and ISDN ports, as well as a number of Motorola M68k based QUICC32 microprocessors and several unknown ASICs.

So with V5 hardware at my disposal, I've slowly re-started my efforts to implement the LE (local exchange) side of the V5 protocol stack, with the goal of eventually being able to interface those V5 AN with the Osmocom Community TDM over IP network. Once that is in place, we should also be able to offer real ISDN Uk0 (BRI) and POTS lines at retrocomputing events or hacker camps in the coming years.

08 Sep 2022 10:00pm GMT

Harald "LaF0rge" Welte: Clock sync trouble with Digium cards and timing cables

If you have ever worked with Digium (now part of Sangoma) digital telephony interface cards such as the TE110/410/420/820 (single to octal E1/T1/J1 PRI cards), you will probably have seen that they always have a timing connector, where the timing information can be passed from one card to another.

In PDH/ISDN (or even SDH) networks, it is very important to have a synchronized clock across the network. If the clocks are drifting, there will be underruns or overruns, with associated phase jumps that are particularly dangerous when analog modem calls are transported.

In traditional ISDN use cases, the clock is always provided by the network operator, and any customer/user side equipment is expected to synchronize to that clock.

So this Digium timing cable is needed in applications where you have more PRI lines than possible with one card, but only a subset of your lines (spans) are connected to the public operator. The timing cable should make sure that the clock received on one port from the public operator should be used as transmit bit-clock on all of the other ports, no matter on which card.

Unfortunately this decades-old Digium timing cable approach seems to suffer from some problems.

bursty bit clock changes until link is up

The first problem is that downstream port transmit bit clock was jumping around in bursts every two or so seconds. You can see an oscillogram of the E1 master signal (yellow) received by one TE820 card and the transmit of the slave ports on the other card at https://people.osmocom.org/laforge/photos/te820_timingcable_problem.mp4

As you can see, for some seconds the two clocks seem to be in perfect lock/sync, but in between there are periods of immense clock drift.

What I'd have expected is the behavior that can be seen at https://people.osmocom.org/laforge/photos/te820_notimingcable_loopback.mp4 - which shows a similar setup but without the use of a timing cable: Both the master clock input and the clock output were connected on the same TE820 card.

As I found out much later, this problem only occurs until any of the downstream/slave ports is fully OK/GREEN.

This is surprising, as any other E1 equipment I've seen always transmits at a constant bit clock irrespective whether there's any signal in the opposite direction, and irrespective of whether any other ports are up/aligned or not.

But ok, once you adjust your expectations to this Digium peculiarity, you can actually proceed.

clock drift between master and slave cards

Once any of the spans of a slave card on the timing bus are fully aligned, the transmit bit clocks of all of its ports appear to be in sync/lock - yay - but unfortunately only at the very first glance.

When looking at it for more than a few seconds, one can see a slow, continuous drift of the slave bit clocks compared to the master :(

Some initial measurements show that the clock of the slave card of the timing cable is drifting at about 12.5 ppb (parts per billion) when compared against the master clock reference.

This is rather disappointing, given that the whole point of a timing cable is to ensure you have one reference clock with all signals locked to it.

The work-around

If you are willing to sacrifice one port (span) of each card, you can work around that slow-clock-drift issue by connecting an external loopback cable. So the master card is configured to use the clock provided by the upstream provider. Its other ports (spans) will transmit at the exact recovered clock rate with no drift. You can use any of those ports to provide the clock reference to a port on the slave card using an external loopback cable.

In this setup, your slave card[s] will have perfect bit clock sync/lock.

Its just rather sad that you need to sacrifice ports just for achieving proper clock sync - something that the timing connectors and cables claim to do, but in reality don't achieve, at least not in my setup with the most modern and high-end octal-port PCIe cards (TE820).

08 Sep 2022 10:00pm GMT