Showing preview only (4,745K chars total). Download the full file or copy to clipboard to get everything.
Repository: langerhans/dogecoin-wallet-new
Branch: doge-rebase-808
Commit: cf0c4cc6a6da
Files: 499
Total size: 4.3 MB
Directory structure:
gitextract_gt0kxvgh/
├── .github/
│ └── CONTRIBUTING.md
├── .gitignore
├── .tx/
│ └── config
├── README.md
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── integration-android/
│ ├── AUTHORS
│ ├── COPYING
│ ├── build.gradle
│ └── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ └── integration/
│ └── android/
│ └── BitcoinIntegration.java
├── market/
│ ├── market-description-ar.txt
│ ├── market-description-ca.txt
│ ├── market-description-cs.txt
│ ├── market-description-cy.txt
│ ├── market-description-da.txt
│ ├── market-description-de.txt
│ ├── market-description-el.txt
│ ├── market-description-eo.txt
│ ├── market-description-es.txt
│ ├── market-description-fa.txt
│ ├── market-description-fi.txt
│ ├── market-description-fr.txt
│ ├── market-description-he.txt
│ ├── market-description-hi.txt
│ ├── market-description-hr.txt
│ ├── market-description-hu.txt
│ ├── market-description-id.txt
│ ├── market-description-it.txt
│ ├── market-description-iw.txt
│ ├── market-description-ja.txt
│ ├── market-description-ko.txt
│ ├── market-description-mk.txt
│ ├── market-description-nb.txt
│ ├── market-description-nl.txt
│ ├── market-description-pl.txt
│ ├── market-description-pt-BR.txt
│ ├── market-description-pt-PT.txt
│ ├── market-description-ru.txt
│ ├── market-description-sk.txt
│ ├── market-description-sl.txt
│ ├── market-description-sq.txt
│ ├── market-description-sv.txt
│ ├── market-description-tr.txt
│ ├── market-description-uk.txt
│ ├── market-description-vi.txt
│ ├── market-description-zh-TW.txt
│ ├── market-description-zh.txt
│ ├── market-description.txt
│ ├── market-promo-text-ar.txt
│ ├── market-promo-text-ca.txt
│ ├── market-promo-text-cs.txt
│ ├── market-promo-text-cy.txt
│ ├── market-promo-text-da.txt
│ ├── market-promo-text-de.txt
│ ├── market-promo-text-el.txt
│ ├── market-promo-text-eo.txt
│ ├── market-promo-text-es.txt
│ ├── market-promo-text-fa.txt
│ ├── market-promo-text-fi.txt
│ ├── market-promo-text-fr.txt
│ ├── market-promo-text-he.txt
│ ├── market-promo-text-hi.txt
│ ├── market-promo-text-hr.txt
│ ├── market-promo-text-hu.txt
│ ├── market-promo-text-id.txt
│ ├── market-promo-text-it.txt
│ ├── market-promo-text-iw.txt
│ ├── market-promo-text-ja.txt
│ ├── market-promo-text-ko.txt
│ ├── market-promo-text-mk.txt
│ ├── market-promo-text-nb.txt
│ ├── market-promo-text-nl.txt
│ ├── market-promo-text-pl.txt
│ ├── market-promo-text-pt-BR.txt
│ ├── market-promo-text-pt-PT.txt
│ ├── market-promo-text-ru.txt
│ ├── market-promo-text-sk.txt
│ ├── market-promo-text-sl.txt
│ ├── market-promo-text-sq.txt
│ ├── market-promo-text-sv.txt
│ ├── market-promo-text-tr.txt
│ ├── market-promo-text-uk.txt
│ ├── market-promo-text-vi.txt
│ ├── market-promo-text-zh-TW.txt
│ ├── market-promo-text-zh.txt
│ └── market-promo-text.txt
├── sample-integration-android/
│ ├── AUTHORS
│ ├── AndroidManifest.xml
│ ├── COPYING
│ ├── build.gradle
│ ├── res/
│ │ └── layout/
│ │ └── sample_activity.xml
│ └── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ └── integration/
│ └── sample/
│ └── SampleActivity.java
├── settings.gradle
└── wallet/
├── AUTHORS
├── AndroidManifest.xml
├── CHANGES
├── COPYING
├── README.md
├── README.recover.md
├── README.specs.md
├── assets/
│ ├── bip39-wordlist.txt
│ ├── checkpoints.txt
│ ├── electrum-servers.txt
│ └── fees.txt
├── assets-prod/
│ ├── checkpoints.txt
│ ├── electrum-servers.txt
│ └── fees.txt
├── build.gradle
├── cpp/
│ ├── CMakeLists.txt
│ ├── config.h
│ ├── crypto_scrypt-nosse.c
│ ├── crypto_scrypt.h
│ ├── scrypt_jni.c
│ ├── scrypt_platform.h
│ ├── sha256.c
│ ├── sha256.h
│ └── sysendian.h
├── proguard.cfg
├── res/
│ ├── anim/
│ │ ├── slide_in_bottom.xml
│ │ ├── slide_in_left.xml
│ │ ├── slide_in_right.xml
│ │ ├── slide_in_top.xml
│ │ └── transaction_layout_anim.xml
│ ├── animator/
│ │ ├── fade_in_drawable.xml
│ │ ├── fade_in_view.xml
│ │ └── fade_out_drawable.xml
│ ├── color/
│ │ ├── bg_list_card.xml
│ │ ├── bg_list_card_transaction.xml
│ │ └── fg_on_dark_bg_network.xml
│ ├── drawable/
│ │ ├── action_mode_background.xml
│ │ ├── appwidget_background.xml
│ │ ├── background_splash.xml
│ │ ├── divider_currency.xml
│ │ ├── divider_dark.xml
│ │ ├── divider_field.xml
│ │ ├── floating_action_button_background.xml
│ │ ├── shortcut_request_coins.xml
│ │ ├── shortcut_scan_qr.xml
│ │ ├── shortcut_send_coins.xml
│ │ ├── stat_notify_peers.xml
│ │ ├── transactions_list_filter_received.xml
│ │ └── transactions_list_filter_sent.xml
│ ├── drawable-anydpi/
│ │ ├── ic_clear_grey600_24dp.xml
│ │ ├── ic_content_copy_white_24dp.xml
│ │ ├── ic_create_white_24dp.xml
│ │ ├── ic_delete_white_24dp.xml
│ │ ├── ic_filter_list_white_24dp.xml
│ │ ├── ic_local_offer_white_24dp.xml
│ │ ├── ic_open_in_browser_white_24dp.xml
│ │ ├── ic_photo_camera_shortcut_24dp.xml
│ │ ├── ic_photo_camera_white_24dp.xml
│ │ ├── ic_qrcode_white_24dp.xml
│ │ ├── ic_refresh_white_24dp.xml
│ │ ├── ic_search_white_24dp.xml
│ │ ├── ic_send_flipped_shortcut_24dp.xml
│ │ ├── ic_send_flipped_white_24dp.xml
│ │ ├── ic_send_shortcut_24dp.xml
│ │ ├── ic_send_white_24dp.xml
│ │ ├── ic_share_white_24dp.xml
│ │ ├── ic_sync_white_24dp.xml
│ │ ├── ic_warning_grey600_24dp.xml
│ │ ├── stat_notify_0_peers_24dp.xml
│ │ ├── stat_notify_1_peers_24dp.xml
│ │ ├── stat_notify_2_peers_24dp.xml
│ │ ├── stat_notify_3_peers_24dp.xml
│ │ ├── stat_notify_4_peers_24dp.xml
│ │ └── stat_notify_bluetooth_24dp.xml
│ ├── layout/
│ │ ├── address_book_content.xml
│ │ ├── address_book_row.xml
│ │ ├── backup_wallet_dialog.xml
│ │ ├── bitmap_dialog.xml
│ │ ├── block_list_fragment.xml
│ │ ├── block_row.xml
│ │ ├── block_row_transaction.xml
│ │ ├── dialog_title.xml
│ │ ├── edit_address_book_entry_dialog.xml
│ │ ├── encrypt_keys_dialog.xml
│ │ ├── exchange_rate_row.xml
│ │ ├── exchange_rates_content.xml
│ │ ├── exchange_rates_fragment.xml
│ │ ├── extended_public_key_dialog.xml
│ │ ├── maintenance_dialog.xml
│ │ ├── network_monitor_content.xml
│ │ ├── peer_list_fragment.xml
│ │ ├── peer_list_row.xml
│ │ ├── raise_fee_dialog.xml
│ │ ├── report_issue_dialog.xml
│ │ ├── request_coins_content.xml
│ │ ├── request_coins_form_include.xml
│ │ ├── request_coins_fragment.xml
│ │ ├── restore_wallet_dialog.xml
│ │ ├── row_separator.xml
│ │ ├── scan_activity.xml
│ │ ├── send_coins_address_row.xml
│ │ ├── send_coins_buttons_include.xml
│ │ ├── send_coins_content.xml
│ │ ├── send_coins_fragment.xml
│ │ ├── sending_addresses_fragment.xml
│ │ ├── spinner_item.xml
│ │ ├── sweep_wallet_content.xml
│ │ ├── sweep_wallet_fragment.xml
│ │ ├── transaction_row.xml
│ │ ├── transaction_row_card.xml
│ │ ├── transaction_row_warning.xml
│ │ ├── wallet_actions_fragment.xml
│ │ ├── wallet_activity_bottom_include.xml
│ │ ├── wallet_activity_onepane_horizontal.xml
│ │ ├── wallet_activity_onepane_vertical.xml
│ │ ├── wallet_activity_twopanes.xml
│ │ ├── wallet_address_dialog.xml
│ │ ├── wallet_address_fragment.xml
│ │ ├── wallet_addresses_fragment.xml
│ │ ├── wallet_balance_fragment.xml
│ │ ├── wallet_balance_widget_content.xml
│ │ ├── wallet_disclaimer_fragment.xml
│ │ └── wallet_transactions_fragment.xml
│ ├── layout-land/
│ │ └── request_coins_fragment.xml
│ ├── menu/
│ │ ├── address_book_activity_options.xml
│ │ ├── blocks_context.xml
│ │ ├── exchange_rates_context.xml
│ │ ├── exchange_rates_fragment_options.xml
│ │ ├── request_coins_activity_options.xml
│ │ ├── request_coins_fragment_options.xml
│ │ ├── send_coins_activity_options.xml
│ │ ├── send_coins_fragment_options.xml
│ │ ├── sending_addresses_context.xml
│ │ ├── sweep_wallet_fragment_options.xml
│ │ ├── wallet_addresses_context.xml
│ │ ├── wallet_balance_fragment_options.xml
│ │ ├── wallet_options.xml
│ │ ├── wallet_transactions_context.xml
│ │ └── wallet_transactions_fragment_options.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── drawables.xml
│ │ ├── ids.xml
│ │ ├── layouts.xml
│ │ ├── strings.xml
│ │ ├── strings_help.xml
│ │ ├── styles.xml
│ │ └── values.xml
│ ├── values-ar/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ca/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-cs/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-cy/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-da/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-de/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-el/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-eo/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-es/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-fi/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-fr/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-h400dp/
│ │ └── layouts.xml
│ ├── values-he/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-hr/
│ │ └── strings.xml
│ ├── values-hu/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-id/
│ │ └── strings.xml
│ ├── values-it/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-iw/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ja/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ko/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-land/
│ │ └── layouts.xml
│ ├── values-mk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-nb/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-night/
│ │ ├── colors.xml
│ │ └── styles.xml
│ ├── values-nl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-notnight-v29/
│ │ └── colors.xml
│ ├── values-pl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-pt-rBR/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-pt-rPT/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ru/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sq/
│ │ └── strings.xml
│ ├── values-sv/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sw/
│ │ └── strings.xml
│ ├── values-sw480dp/
│ │ └── dimens.xml
│ ├── values-sw600dp/
│ │ └── dimens.xml
│ ├── values-sw720dp/
│ │ └── dimens.xml
│ ├── values-tr/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-uk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-v26/
│ │ └── drawables.xml
│ ├── values-vi/
│ │ └── strings.xml
│ ├── values-w1000dp/
│ │ └── dimens.xml
│ ├── values-w400dp/
│ │ └── dimens.xml
│ ├── values-w640dp/
│ │ └── layouts.xml
│ ├── values-w720dp/
│ │ └── layouts.xml
│ ├── values-zh/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-zh-rTW/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ └── xml/
│ ├── file_provider.xml
│ ├── network_security_config.xml
│ ├── preference_about.xml
│ ├── preference_diagnostics.xml
│ ├── preference_headers.xml
│ ├── preference_settings.xml
│ ├── shortcuts.xml
│ └── wallet_balance_widget.xml
├── res-prod/
│ ├── values/
│ │ ├── colors.xml
│ │ └── values.xml
│ ├── values-night/
│ │ └── colors.xml
│ ├── values-notnight-v29/
│ │ └── colors.xml
│ └── xml/
│ └── shortcuts.xml
├── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ ├── Configuration.java
│ ├── Constants.java
│ ├── Logging.java
│ ├── WalletApplication.java
│ ├── WalletBalanceWidgetProvider.java
│ ├── addressbook/
│ │ ├── AddressBookDao.java
│ │ ├── AddressBookDatabase.java
│ │ └── AddressBookEntry.java
│ ├── data/
│ │ ├── AbstractWalletLiveData.java
│ │ ├── BlockchainServiceLiveData.java
│ │ ├── ConfigFormatLiveData.java
│ │ ├── ConfigOwnNameLiveData.java
│ │ ├── DynamicFeeLiveData.java
│ │ ├── PaymentIntent.java
│ │ ├── SelectedExchangeRateLiveData.java
│ │ ├── ThrottelingLiveData.java
│ │ ├── TimeLiveData.java
│ │ ├── TransactionLiveData.java
│ │ ├── WalletBalanceLiveData.java
│ │ └── WalletLiveData.java
│ ├── exchangerate/
│ │ ├── CoinGecko.java
│ │ ├── ExchangeRateDao.java
│ │ ├── ExchangeRateEntry.java
│ │ ├── ExchangeRatesDatabase.java
│ │ └── ExchangeRatesRepository.java
│ ├── offline/
│ │ ├── AcceptBluetoothService.java
│ │ ├── AcceptBluetoothThread.java
│ │ └── DirectPaymentTask.java
│ ├── service/
│ │ ├── BlockchainService.java
│ │ ├── BlockchainState.java
│ │ ├── BootstrapReceiver.java
│ │ ├── NonWitnessPeerGroup.java
│ │ └── StartBlockchainService.java
│ ├── ui/
│ │ ├── AbstractWalletActivity.java
│ │ ├── AbstractWalletActivityViewModel.java
│ │ ├── AddressAndLabel.java
│ │ ├── AddressBookActivity.java
│ │ ├── AddressBookAdapter.java
│ │ ├── AddressBookViewModel.java
│ │ ├── AlertDialogsFragment.java
│ │ ├── AlertDialogsViewModel.java
│ │ ├── BitmapFragment.java
│ │ ├── CircularProgressView.java
│ │ ├── CurrencyAmountView.java
│ │ ├── CurrencyCalculatorLink.java
│ │ ├── CurrencySymbolDrawable.java
│ │ ├── CurrencyTextView.java
│ │ ├── DialogBuilder.java
│ │ ├── DialogEvent.java
│ │ ├── DividerItemDecoration.java
│ │ ├── EditAddressBookEntryFragment.java
│ │ ├── EncryptKeysDialogFragment.java
│ │ ├── Event.java
│ │ ├── ExchangeRatesActivity.java
│ │ ├── ExchangeRatesAdapter.java
│ │ ├── ExchangeRatesFragment.java
│ │ ├── ExchangeRatesViewModel.java
│ │ ├── HelpDialogFragment.java
│ │ ├── InputParser.java
│ │ ├── MaybeMaintenanceFragment.java
│ │ ├── MaybeMaintenanceViewModel.java
│ │ ├── ProgressDialogFragment.java
│ │ ├── ReportIssueDialogBuilder.java
│ │ ├── ReportIssueDialogFragment.java
│ │ ├── RequestCoinsActivity.java
│ │ ├── RequestCoinsActivityViewModel.java
│ │ ├── RequestCoinsFragment.java
│ │ ├── RequestCoinsViewModel.java
│ │ ├── SendCoinsQrActivity.java
│ │ ├── SendingAddressesFragment.java
│ │ ├── SendingAddressesViewModel.java
│ │ ├── SeparatorViewHolder.java
│ │ ├── ShowPasswordCheckListener.java
│ │ ├── StickToTopLinearLayoutManager.java
│ │ ├── TransactionsAdapter.java
│ │ ├── WalletActionsFragment.java
│ │ ├── WalletActivity.java
│ │ ├── WalletActivityViewModel.java
│ │ ├── WalletAddressDialogFragment.java
│ │ ├── WalletAddressFragment.java
│ │ ├── WalletAddressViewModel.java
│ │ ├── WalletAddressesFragment.java
│ │ ├── WalletAddressesViewModel.java
│ │ ├── WalletBalanceFragment.java
│ │ ├── WalletBalanceViewModel.java
│ │ ├── WalletDisclaimerFragment.java
│ │ ├── WalletDisclaimerViewModel.java
│ │ ├── WalletTransactionsFragment.java
│ │ ├── WalletTransactionsViewModel.java
│ │ ├── backup/
│ │ │ ├── BackupWalletActivity.java
│ │ │ ├── BackupWalletDialogFragment.java
│ │ │ ├── BackupWalletViewModel.java
│ │ │ ├── FileAdapter.java
│ │ │ ├── ImportDialogButtonEnablerListener.java
│ │ │ ├── RestoreWalletDialogFragment.java
│ │ │ ├── RestoreWalletFromExternalActivity.java
│ │ │ └── RestoreWalletViewModel.java
│ │ ├── monitor/
│ │ │ ├── BlockListAdapter.java
│ │ │ ├── BlockListFragment.java
│ │ │ ├── BlockListViewModel.java
│ │ │ ├── NetworkMonitorActivity.java
│ │ │ ├── NetworkMonitorViewModel.java
│ │ │ ├── PeerListAdapter.java
│ │ │ ├── PeerListFragment.java
│ │ │ └── PeerListViewModel.java
│ │ ├── preference/
│ │ │ ├── AboutFragment.java
│ │ │ ├── DiagnosticsFragment.java
│ │ │ ├── ExtendedPublicKeyFragment.java
│ │ │ ├── PreferenceActivity.java
│ │ │ ├── ResolveDnsTask.java
│ │ │ └── SettingsFragment.java
│ │ ├── scan/
│ │ │ ├── CameraManager.java
│ │ │ ├── ScanActivity.java
│ │ │ ├── ScanViewModel.java
│ │ │ └── ScannerView.java
│ │ └── send/
│ │ ├── DecodePrivateKeyTask.java
│ │ ├── DeriveKeyTask.java
│ │ ├── FeeCategory.java
│ │ ├── MaintenanceDialogFragment.java
│ │ ├── RaiseFeeDialogFragment.java
│ │ ├── RaiseFeeViewModel.java
│ │ ├── RequestPaymentRequestTask.java
│ │ ├── RequestWalletBalanceTask.java
│ │ ├── SendCoinsActivity.java
│ │ ├── SendCoinsActivityViewModel.java
│ │ ├── SendCoinsFragment.java
│ │ ├── SendCoinsOfflineTask.java
│ │ ├── SendCoinsViewModel.java
│ │ ├── SweepWalletActivity.java
│ │ ├── SweepWalletFragment.java
│ │ └── SweepWalletViewModel.java
│ └── util/
│ ├── Assets.java
│ ├── Base43.java
│ ├── Bluetooth.java
│ ├── CheatSheet.java
│ ├── CrashReporter.java
│ ├── Crypto.java
│ ├── FillGapsLinearLayout.java
│ ├── Formats.java
│ ├── GenericUtils.java
│ ├── Installer.java
│ ├── Iso8601Format.java
│ ├── MonetarySpannable.java
│ ├── Nfc.java
│ ├── OnFirstPreDraw.java
│ ├── Qr.java
│ ├── Toast.java
│ ├── ViewPagerTabs.java
│ ├── WalletUtils.java
│ ├── WholeStringBuilder.java
│ └── ZoomOutPageTransformer.java
└── test/
└── de/
└── schildbach/
└── wallet/
├── exchangerate/
│ ├── CoinGeckoTest.java
│ └── coingecko.json
└── util/
├── Base43Test.java
├── BluetoothTest.java
├── CryptoTest.java
├── FormatsTest.java
├── WalletUtilsTest.java
├── backup-protobuf-testnet
├── bitcoin-wallet-backup-testnet-3.50
└── bitcoin-wallet-backup-testnet-3.50-crlf
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing Guidelines
We love pull requests from everyone! Bug reports are also welcome.
However if you've got a question or would like to start a discussion, please post to
[Bitcoin stack exchange](https://bitcoin.stackexchange.com/questions/tagged/bitcoin-wallet-app).
If you would like to contribute language translations, we prefer if you use our
[Transifex project](https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/). Languages will be
synced from there regularly.
================================================
FILE: .gitignore
================================================
.gradle/
build/
local.properties
.classpath
.project
.settings/
.idea/
*.iml
bin/
gen/
wallet/.cxx
================================================
FILE: .tx/config
================================================
[main]
host = https://www.transifex.com
[bitcoin-wallet.strings]
type = ANDROID
source_file = wallet/res/values/strings.xml
source_lang = en
file_filter = wallet/res/values-<lang>/strings.xml
lang_map = sl_SI:sl, pt_PT:pt-rPT, pt_BR:pt-rBR, zh_TW:zh-rTW
[bitcoin-wallet.strings_help]
type = ANDROID
source_file = wallet/res/values/strings_help.xml
source_lang = en
file_filter = wallet/res/values-<lang>/strings_help.xml
lang_map = sl_SI:sl, pt_PT:pt-rPT, pt_BR:pt-rBR, zh_TW:zh-rTW
[bitcoin-wallet.market-promo-text]
type = TXT
source_file = market/market-promo-text.txt
source_lang = en
file_filter = market/market-promo-text-<lang>.txt
lang_map = sl_SI:sl, pt_PT:pt-PT, pt_BR:pt-BR, zh_TW:zh-TW
[bitcoin-wallet.market-description]
type = TXT
source_file = market/market-description.txt
source_lang = en
file_filter = market/market-description-<lang>.txt
lang_map = sl_SI:sl, pt_PT:pt-PT, pt_BR:pt-BR, zh_TW:zh-TW
================================================
FILE: README.md
================================================
# BITCOIN WALLET
Welcome to _Bitcoin Wallet_, a standalone Bitcoin payment app for your Android device!
This project contains several sub-projects:
* __wallet__:
The Android app itself. This is probably what you're searching for.
* __market__:
App description and promo material for the Google Play app store.
* __integration-android__:
A tiny library for integrating Bitcoin payments into your own Android app
(e.g. donations, in-app purchases).
* __sample-integration-android__:
A minimal example app to demonstrate integration of Bitcoin payments into
your Android app.
### PREREQUISITES FOR BUILDING
You'll need git, a Java 8 SDK (or later) and Gradle 4.4 (or later) for this. We'll assume Ubuntu 18.04 LTS (Bionic Beaver)
for the package installs, which comes with OpenJDK 8 and Gradle 4.4.1 out of the box.
# first time only
sudo apt install git gradle openjdk-8-jdk
Create a directory for the Android SDK (e.g. `android-sdk`) and point the `ANDROID_HOME` variable to it.
Download the [Android SDK Tools](https://developer.android.com/studio/index.html#command-tools)
and unpack it to `$ANDROID_HOME/`.
Finally, the last preparative step is acquiring the source code. Again in your workspace, use:
# first time only
git clone -b master https://github.com/bitcoin-wallet/bitcoin-wallet.git bitcoin-wallet
cd bitcoin-wallet
### BUILDING
You can build all sub-projects in all flavors at once using Gradle:
# each time
gradle clean build
For details about building the wallet see the [specific README](wallet/README.md).
### BINARIES
You can install the app from the app store of your choice:
* __Testnet__:
<a href="https://f-droid.org/app/de.schildbach.wallet_test">F-Droid</a> |
<a href='https://play.google.com/store/apps/details?id=de.schildbach.wallet_test'>Google Play</a>
* __Mainnet__:
<a href="https://f-droid.org/app/de.schildbach.wallet">F-Droid</a> |
<a href='https://play.google.com/store/apps/details?id=de.schildbach.wallet'>Google Play</a>
================================================
FILE: build.gradle
================================================
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
//noinspection GradleDependency
classpath 'net.sf.proguard:proguard-gradle:6.0.3'
classpath('fr.avianey.androidsvgdrawable:gradle-plugin:3.0.2') {
exclude group: 'xerces'
}
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
google()
}
}
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradle.properties
================================================
## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Sat Dec 26 13:42:00 CET 2020
org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
================================================
FILE: gradlew
================================================
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: integration-android/AUTHORS
================================================
Andreas Schildbach <andreas@schildbach.de>
================================================
FILE: integration-android/COPYING
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
================================================
FILE: integration-android/build.gradle
================================================
plugins {
id 'java'
}
dependencies {
compile('com.google.android:android:4.0.1.2') {
transitive false
}
}
sourceSets {
main {
java {
srcDir 'src'
}
resources {
srcDir 'src'
}
}
}
compileJava {
sourceCompatibility '1.6'
targetCompatibility '1.6'
}
================================================
FILE: integration-android/src/de/schildbach/wallet/integration/android/BitcoinIntegration.java
================================================
/*
* Copyright the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.schildbach.wallet.integration.android;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.widget.Toast;
/**
* @author Andreas Schildbach
*/
public final class BitcoinIntegration {
private static final String INTENT_EXTRA_PAYMENTREQUEST = "paymentrequest";
private static final String INTENT_EXTRA_PAYMENT = "payment";
private static final String INTENT_EXTRA_TRANSACTION_HASH = "transaction_hash";
private static final String MIMETYPE_PAYMENTREQUEST = "application/bitcoin-paymentrequest"; // BIP 71
/**
* Request any amount of Bitcoins (probably a donation) from user, without feedback from the app.
*
* @param context
* Android context
* @param address
* Bitcoin address
*/
public static void request(final Context context, final String address) {
final Intent intent = makeBitcoinUriIntent(address, null);
start(context, intent);
}
/**
* Request specific amount of Bitcoins from user, without feedback from the app.
*
* @param context
* Android context
* @param address
* Bitcoin address
* @param amount
* Bitcoin amount in satoshis
*/
public static void request(final Context context, final String address, final long amount) {
final Intent intent = makeBitcoinUriIntent(address, amount);
start(context, intent);
}
/**
* Request payment from user, without feedback from the app.
*
* @param context
* Android context
* @param paymentRequest
* BIP70 formatted payment request
*/
public static void request(final Context context, final byte[] paymentRequest) {
final Intent intent = makePaymentRequestIntent(paymentRequest);
start(context, intent);
}
/**
* Request any amount of Bitcoins (probably a donation) from user, with feedback from the app. Result
* intent can be received by overriding {@code Activity#onActivityResult(int, int, Intent)}. Result indicates
* either {@link Activity#RESULT_OK} or {@link Activity#RESULT_CANCELED}. In the success case, use
* {@link #transactionHashFromResult(Intent)} to read the transaction hash from the intent.
*
* Warning: A success indication is no guarantee! To be on the safe side, you must drive your own Bitcoin
* infrastructure and validate the transaction.
*
* @param activity
* Calling Android activity
* @param requestCode
* Code identifying the call when {@code Activity#onActivityResult(int, int, Intent)} is called
* back
* @param address
* Bitcoin address
*/
public static void requestForResult(final Activity activity, final int requestCode, final String address) {
final Intent intent = makeBitcoinUriIntent(address, null);
startForResult(activity, requestCode, intent);
}
/**
* Request specific amount of Bitcoins from user, with feedback from the app. Result intent can be
* received by overriding {@code Activity#onActivityResult(int, int, Intent)}. Result indicates either
* {@link Activity#RESULT_OK} or {@link Activity#RESULT_CANCELED}. In the success case, use
* {@link #transactionHashFromResult(Intent)} to read the transaction hash from the intent.
*
* Warning: A success indication is no guarantee! To be on the safe side, you must drive your own Bitcoin
* infrastructure and validate the transaction.
*
* @param activity
* Calling Android activity
* @param requestCode
* Code identifying the call when {@code Activity#onActivityResult(int, int, Intent)} is called
* back
* @param address
* Bitcoin address
*/
public static void requestForResult(final Activity activity, final int requestCode, final String address,
final long amount) {
final Intent intent = makeBitcoinUriIntent(address, amount);
startForResult(activity, requestCode, intent);
}
/**
* Request payment from user, with feedback from the app. Result intent can be received by overriding
* {@code Activity#onActivityResult(int, int, Intent)}. Result indicates either {@link Activity#RESULT_OK} or
* {@link Activity#RESULT_CANCELED}. In the success case, use {@link #transactionHashFromResult(Intent)}
* to read the transaction hash from the intent.
*
* Warning: A success indication is no guarantee! To be on the safe side, you must drive your own Bitcoin
* infrastructure and validate the transaction.
*
* @param activity
* Calling Android activity
* @param requestCode
* Code identifying the call when {@code Activity#onActivityResult(int, int, Intent)} is called
* back
* @param paymentRequest
* BIP70 formatted payment request
*/
public static void requestForResult(final Activity activity, final int requestCode, final byte[] paymentRequest) {
final Intent intent = makePaymentRequestIntent(paymentRequest);
startForResult(activity, requestCode, intent);
}
/**
* Get payment request from intent. Meant for usage by applications accepting payment requests.
*
* @param intent
* intent
* @return payment request or null
*/
public static byte[] paymentRequestFromIntent(final Intent intent) {
return intent.getByteArrayExtra(INTENT_EXTRA_PAYMENTREQUEST);
}
/**
* Put BIP70 payment message into result intent. Meant for usage by Bitcoin wallet applications.
*
* @param result
* result intent
* @param payment
* payment message
*/
public static void paymentToResult(final Intent result, final byte[] payment) {
result.putExtra(INTENT_EXTRA_PAYMENT, payment);
}
/**
* Get BIP70 payment message from result intent. Meant for usage by applications initiating a Bitcoin
* payment.
*
* You can use the transactions contained in the payment to validate the payment. For this, you need your
* own Bitcoin infrastructure though. There is no guarantee that the payment will ever confirm.
*
* @param result
* result intent
* @return payment message
*/
public static byte[] paymentFromResult(final Intent result) {
return result.getByteArrayExtra(INTENT_EXTRA_PAYMENT);
}
/**
* Put transaction hash into result intent. Meant for usage by Bitcoin wallet applications.
*
* @param result
* result intent
* @param txHash
* transaction hash
*/
public static void transactionHashToResult(final Intent result, final String txHash) {
result.putExtra(INTENT_EXTRA_TRANSACTION_HASH, txHash);
}
/**
* Get transaction hash from result intent. Meant for usage by applications initiating a Bitcoin payment.
*
* You can use this hash to request the transaction from the Bitcoin network, in order to validate. For
* this, you need your own Bitcoin infrastructure though. There is no guarantee that the transaction has
* ever been broadcasted to the Bitcoin network.
*
* @param result
* result intent
* @return transaction hash
*/
public static String transactionHashFromResult(final Intent result) {
return result.getStringExtra(INTENT_EXTRA_TRANSACTION_HASH);
}
private static final int SATOSHIS_PER_COIN = 100000000;
private static Intent makeBitcoinUriIntent(final String address, final Long amount) {
final StringBuilder uri = new StringBuilder("bitcoin:");
if (address != null)
uri.append(address);
if (amount != null)
uri.append("?amount=")
.append(String.format("%d.%08d", amount / SATOSHIS_PER_COIN, amount % SATOSHIS_PER_COIN));
return new Intent(Intent.ACTION_VIEW, Uri.parse(uri.toString()));
}
private static Intent makePaymentRequestIntent(final byte[] paymentRequest) {
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType(MIMETYPE_PAYMENTREQUEST);
intent.putExtra(INTENT_EXTRA_PAYMENTREQUEST, paymentRequest);
return intent;
}
private static void start(final Context context, final Intent intent) {
final PackageManager pm = context.getPackageManager();
if (pm.resolveActivity(intent, 0) != null)
context.startActivity(intent);
else
redirectToDownload(context);
}
private static void startForResult(final Activity activity, final int requestCode, final Intent intent) {
final PackageManager pm = activity.getPackageManager();
if (pm.resolveActivity(intent, 0) != null)
activity.startActivityForResult(intent, requestCode);
else
redirectToDownload(activity);
}
private static void redirectToDownload(final Context context) {
Toast.makeText(context, "No Bitcoin application found.\nPlease install Bitcoin Wallet.", Toast.LENGTH_LONG)
.show();
final Intent marketIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=de.schildbach.wallet"));
final Intent binaryIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://github.com/bitcoin-wallet/bitcoin-wallet/releases"));
final PackageManager pm = context.getPackageManager();
if (pm.resolveActivity(marketIntent, 0) != null)
context.startActivity(marketIntent);
else if (pm.resolveActivity(binaryIntent, 0) != null)
context.startActivity(binaryIntent);
// else out of luck
}
}
================================================
FILE: market/market-description-ar.txt
================================================
<b>إمتلك البت كوينز الخاصة بك, دائماً في جيبك!</b> تدفع بسرعة بمجرد مسح رمز الـ QR. و كتاجر، يمكنك قبض مبالغ خدماتك حالاً وبكل ثقة. محفظة البتكوين هي أول تطبيق محمول لعملة البتكوين، و كذا الأكثر أماناً.
<b>المميزات</b>
• لا داعي للتسجيل أو استخدام تطبيقات شبكة إنترنت أو الخدمات السحابية! كون الاتصال في هذه المحفظة غير مركزي (peer-to-peer) ولا تعتمد على سيرفر خدمة.
إظهار رصيدك من البتكوين على شكل BTC و µBTC و mBTC.
• تحويل البيتكوين من وإلى العملات المحلية.
ارسال واستقبال عملة Bitcoin عبر NFC, QR codes او Bitcoin روابط
• في حين تعذر الاتصال بالإنترنت، يمكنك الدفع عن طريق تقنية البلوتوث.
• يقوم البرنامج بإشعارك حين استلام دفعات البيتكوين بواسطة تنبيهات النظام (Notifications).
• عرض رصيدك الحالي من البيتكوين باستخدام التطبيقات المصغرة App Widget.
</b>للمشاركة <b>
محفظة البتكوين <b>تطبيق حر</b> و <b>مفتوح المصدر</b>. تحت رخصة : GPLv3
https://www.gnu.org/licenses/gpl-3.0.ar.html
الكود المصدري للبرنامج متوافر على GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
كل الترجمات مدارة عبر Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
استخدم على مسؤوليتك الشخصية !
================================================
FILE: market/market-description-ca.txt
================================================
<b>Tingues els teus Bitcoins sempre amb tu, a la teva butxaca!.<b> Per pagar ràpidament escanejant un codi QR. Com a comerciant, pots rebre pagaments instantàniament amb confiança. La Cartera Bitcoin és la primera aplicació mòbil de Bitcoin i possiblement també la més segura!.
<b>CARACTERÍSTIQUES</b>
• Sense enregistrar-se ni amb necessitat d'un servei web o al núvol!. Aquesta cartera és descentralitzada i de parell a parell.
• Mostra l'import de bitcoin en BTC, mBTC i µBTC.
• Conversió cap a i des de divises nacionals.
• Enviar i rebre bitcoins a través d'NFC, codis QR i adreces Bitcoin.
• Quan ets fora de línia, encara pots pagar a través de Bluetooth.
• Notificació del sistema quan reps monedes.
• Possibilitat d'agregar carteres de paper (per ex. les utilitzades per l'emmagatzematge en fred)
• Widget d'aplicació per al balanç de Bitcoin.
<b>COL·LABORAR</b>
La Cartera de Bitcoin és <b>codi obert</b> i <b>programari lliure</b>. Llicència: GPLv3
https://www.gnu.org/licenses/gpl-3.0.ca.html
El nostre codi està disponible a GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Totes les traduccions estan gestionades a través de Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Utilitza-la sota la teva responsabilitat!</i>
================================================
FILE: market/market-description-cs.txt
================================================
<b>Mějte své Bitcoiny vždy s sebou ve své kapse!</b> Plaťte rychlým oskenováním QR kódu. A jako prodejce můžete přijímat platby spolehlivě a rychle. Bitcoin Wallet je mobilní Bitcoin aplikace číslo jedna a jedna z nejbezpečnějších!
<b>FUNKCE</b>
• Není třeba žádná registrace, webová služba ani cloud! Toto je peer to peer decentralizovaná peněženka.
• Zobrazení Bitcoin částek v BTC, mBTC a µBTC.
• Přepočet z a do národních měn.
• Odesílání a přijímání plateb přes NFC, QR kódy nebo Bitcoin URL.
• Pokud jste offline, stále můžete platit přes Bluetooth.
• Systémové notifikace při přijaté platbě
• Načítání papírových peněženek (např. ty co se používají u cold storage).
• Widget pro zobrazení Bitcoin bilance.
• Bezpečnost: Podporuje SegWit a nový formát bech32.
• Soukromí: Podporuje Tor prostřednictvím samostatné aplikace Orbot.
<b>PŘISPĚJTE</b>
Bitcoin Wallet je <b>open source</b> a <b>svobodný software</b>. Licence: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Náš zdrojový kód je k dispozici na GitHubu:
https://github.com/bitcoin-wallet/bitcoin-wallet
Veškeré překlady jsou spravovány přes Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Použití na vlastní riziko!</i>
================================================
FILE: market/market-description-cy.txt
================================================
<b>Cluda dy Fitcoin yn dy boced!</b>Gellir talu'n gyflym gan sganio cod QR. Fel masnachwr, gellir derbyn taliadau yn syth ac yn ddibynadwy. Waled Bitcoin yw'r ap Bitcoin cyntaf a hefyd, gellir dadlau, y mwyaf diogel!
<b>NODWEDDION</b>
• Dim angen cofrestru, gwasanaeth gwe na chwmwl! Mae'r waled hon yn ddatganoledig ac yn gyfoed-i-gyfoed.
• Dangos swm Bitcoin mewn BTC, mBTC a µBTC.
• Cyfnewid i ac o arian gwahanol gwledydd.
• Anfon a derbyn Bitcoin trwy NFC, codau QR neu URLau Bitcoin.
• Gellir talu trwy Bluetooth pan nad oes cysylltiad rhyngrwyd.
• Hysbysiad system pan dderbynnir Bitcoin.
• Ysgubo dy waled bapur (e.e. y rhai a ddefnyddir am storfa oer).
• Teclyn i ddangos balans Bitcoin.
• Diogelwch: Yn cefnogi SegWit a'r fformat bech32 newydd.
• Preifatrwydd: Yn cefnogi Tor trwy'r ap Orbot ar wahan.
<b>CYFRANNU</b>
Mae Waled Bitcoin yn feddalwedd <b>cod agored</b> ac <b>am ddim</b>. Trwydded: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Mae ein cod gwreiddiol ar gael ar GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Rheolir pob cyfieithiad trwy Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Defnyddir ar dy risg dy hun!</i>
================================================
FILE: market/market-description-da.txt
================================================
<b>Hav altid dine Bitcoins med dig i din lomme!</b> Du betaler ved hurtigt at scanne en QR-kode. Som handlende kan du modtage betalinger pålideligt og øjeblikkeligt. Bitcoin Wallet er den første mobile Bitcoin-app, og muligvis også den mest sikre!
<b>FUNKTIONER</b>
• Ingen registrering, webservice eller sky behøves! Tegnebogen er decentraliseret og peer-to-peer.
• Visning af Bitcoin-beløb i BTC, mBTC og µBTC.
• Konvertering til og fra lokale valutaer.
• Afsendelse og modtagelse af Bitcoin via NFC, QR-koder eller Bitcoin-URLer.
• Når du er offline, kan du stadig betale via Bluetooth.
• Systemnotifikation for modtagne mønter.
• Rydning af papirtegnebøger (fx de der bruges til kold opbevaring).
• App-widget for Bitcoin-saldo.
• Sikkerhed: Understøtter SegWit og det nye bech32-format.
• Beskyttelse af privatliv: Understøtter Tor via den separate Orbot-app.
<b>BIDRAG</b>
Bitcoin Wallet er <b>fri software</b> med <b>åben kildekode</b>. Licens: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Vores kildekode er tilgængelig på GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Alle oversættelser håndteres via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Brug for egen risiko!</i>
================================================
FILE: market/market-description-de.txt
================================================
<b>Hab deine Bitcoins immer dabei, in deiner Hosentasche!</b> Du zahlst, indem du rasch einen QR-Code scannst. Als Händler empfängst du Zahlungen zuverlässig und sofort. Bitcoin Wallet ist die erste mobile Bitcoin app, und wohl auch die sicherste!
<b>FEATURES</b>
• Keine Registrierung, Web-Dienst oder Cloud nötig! Diese Wallet ist dezentral und Peer to Peer.
• Anzeige von Bitcoin-Werten in BTC, mBTC und µBTC.
• Umrechnung von und zu den nationalen Währungen.
• Senden und Empfangen von Bitcoin via NFC, QR-Codes oder Bitcoin URLs.
• Wenn du offline bist, kannst du trotzdem über Bluetooth zahlen.
• System-Benachrichtigung für den Empfang von Zahlungen.
• Entleeren von Paper-Wallets (die z.B. für Cold-Storage genutzt wurden).
• App-Widget zeigt Bitcoin-Guthaben an.
• Sicherheit: Unterstützt SegWit und das neue Bech32-Format.
• Privatsphäre: Unterstützt Tor mittels der separaten Orbot App.
<b>MITWIRKEN</b>
Bitcoin Wallet ist <b>Open Source</b> und <b>Freie Software</b>. Lizenz: GPLv3
https://www.gnu.org/licenses/gpl-3.0.de.html
Unser Source Code ist auf GitHub verfügbar:
https://github.com/bitcoin-wallet/bitcoin-wallet
Alle Übersetzungen werden auf Transifex organisiert:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Nutzung auf eigene Gefahr!</i>
================================================
FILE: market/market-description-el.txt
================================================
<b>Τα Bitcoins πάντα μαζί σας, στην τσέπη σας!</b>Πληρώστε σαρώνοντας γρήγορα ένα QR code. Ως έμπορος, λαμβάνετε πληρωμές αξιόπιστα και άμεσα. Το Bitcoin Wallet είναι ή πρώτη εφαρμογή Bitcoin για κινητά, και αναμφισβήτητα η πιο ασφαλής!
<b>ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ</b>
• Χωρίς ανάγκη εγγραφής, διαδικτυακής υπηρεσίας ή νέφος απαραίτητο! Αυτό το πορτοφόλι είναι αποκεντρωμένης λειτουργίας και peer to peer.
• Απεικόνιση του ποσού Bitcoin BTC, mBTC και µBTC.
• Μετατροπή προς και από εθνικά νομίσματα.
• Αποστολή και παραλαβή Bitcoin μέσω NFC, κωδικών QR ή Bitcoin URL.
• Όταν είστε εκτός σύνδεσης, μπορείτε ακόμη να πληρώσετε μέσω Bluetooth.
• Ειδοποίηση συστήματος για ληφθέντα νομίσματα.
• Εισαγωγή χάρτινων πορτοφολιών (π.χ. για αποθήκευση σε φυσική μορφή).
• Γραφικό στοιχείο για υπόλοιπο των Bitcoin.
<b>ΣΥΜΒΑΛΛΕΤΕ</b>
Το Bitcoin Wallet είναι <b>λογισμικό ανοικτού κώδικα</b> και <b>δωρεάν λογισμικό</b>. Άδεια χρήσης: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Ο κώδικάς μας είναι διαθέσιμος στο GitHub.
https://github.com/bitcoin-wallet/bitcoin-wallet
Διαχείρηση όλων των μεταφράσεων μέσω του Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Χρησιμοποιήστε με δική σας ευθύνη!</i>
================================================
FILE: market/market-description-eo.txt
================================================
Havu viajn Bitmonojn ĉiam kun vi, en via poŝo! Vi povas pagi per rapide skanado de QR-kodo. Kiel komercisto, vi povas ricevi pagojn fidinde kaj tuj. Bitcoin Wallet estas unua movebla Bitmona aplikaĵo, kaj disputeble ankaŭ la plej sekura!
TRAJTOJ:
• Neniu registriĝo, ttt servo aŭ nubo bezonataj! Ĉi monujo estas malcentralizita kaj pajro al pajro.
• Montro de Bitmona kvanto en BTC kaj mBTC.
• Konvertiĝo al kaj de la naciaj valutoj.
• Sendado kaj ricevo de Bitmono tra NFC, QR-kodoj aŭ Bitmono URLoj.
• Kiam vi estas senkonekta, vi ankoraŭ povas pagi per Bluetooth.
• Sistema sciigo por ricevitaj moneroj.
• Aplikaĵa fenestraĵo por Bitmona saldo.
Se vi volas kontribui al Bitcoin Wallet, la projekto lokas ĉe
https://github.com/bitcoin-wallet/bitcoin-wallet
Licenco: GPLv3
Uzu je via propra risko!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-es.txt
================================================
<b>Ten tus Bitcoins siempre contigo, ¡en tu bolsillo!</b> Paga rápidamente leyendo el código QR. Como comercio puedes recibir pagos de forma fiable e instantánea. Bitcoin Wallet es la primera aplicación móvil Bitcoin. ¡Y posiblemente también la más segura!
<b>CARACTERÍSTICAS</b>
• ¡No requiere registro, servidor en la nube o servicio web! Este monedero es auténticamente descentralizado y entre pares (peer-to-peer).
• Muestra la cantidad de bitcoins en BTC, mBTC, y µBTC.
• Conversión hacia y desde divisas nacionales.
• Envío y recepción de bitcoins mediante NFC, códigos QR o identificadores URL Bitcoin.
• Cuando no tienes conexión, puedes pagar via Bluetooth.
• Notificación del sistema al recibir bitcoins.
• Barrido de monederos de papel (por ejemplo, los que se utilizan para custodia en frio).
• Widget para el saldo de bitcoins.
• Seguridad: Soporta SegWit y el nuevo formato bech32.
• Privacidad: Soporta Tor mediante Orbot app.
<b>CONTRIBUIR</b>
Bitcoin Wallet es <b>código abierto</b> y <b>software libre</b>. Licencia: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Nuestro código fuente está disponible en GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Todas las traducciones son administradas a través de Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>¡Úsalo bajo tu propio riesgo!</i>
================================================
FILE: market/market-description-fa.txt
================================================
بیتکوینهای تان را همیشه با خود در کیف پولتان داشته باشید. به سرعت با اسکن کردن QR-code پرداخت کنید. به عنوان فروشنده، پرداختها را با امنیت و سرعت دریافت کنید. Bitcoin Wallet اولین برنامه بیتکوین بر روی گوشیهای همراه بود و همچنین به عنوانه امنترین برنامه در نظر گرفته میشود.
خصوصیات
به هیچگونه ثبت نام و یا سرویس جانبی اینترنتی نیاز ندارید. این کیف پول غیر مترمرکز و نظیر به نظیر (p2p) بوده.
نمایش میزان بیتکوین به صورت واحد بیتکوین, میلی بیتکوین و میکرو بیتکوین.
تبدیل ارزش به واحد پولی کشورهای متفاوت.
فرستادن و دریافت بیتکوین به صورت NFC ، Qrcode و آدرس بیتکوین.
بدون دسترسی به اینترنت همچنان میتوان بیتکوین را از طریق بلوتوث پرداخت کرد.
وقتی پول دریافت میکنید برنامه شما را مطلع میکند.
استفاده از کیف پولهای کاغذی (همانند آنهایی که به عنوانه cold storage استفاده میشود).
ویجت برای نشان دادن موجودی شما.
• امنیت: پشتیبانی از SegWit و فرمت جدید bech32.
• حریم خصوصی: پشتیبانی از Tor از طریق برنامه Orbot که جداگانه مورد استفاده قرار میگیرد.
کمک و همکاری
Bitcoin Wallet به صورت کد باز و مجانی تحت لیسانس: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
کد این برنامه به صورت باز در GitHub قابل دسترسی است.
https://github.com/bitcoin-wallet/bitcoin-wallet
همهٔ ترجمها توسط Transifex مدیریت شده.
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
با ریسک خود استفاده کنید.
================================================
FILE: market/market-description-fi.txt
================================================
<b>Pidä Bitcoinisi aina mukana taskussasi!</b> Voit maksaa nopeasti skannaamalla QR-koodin. Kauppiaana saat maksut turvallisesti ja välittömästi. Bitcoin Wallet on ensimmäinen Bitcoin-mobiilisovellus ja luultavimmin myös kaikista turvallisin!
<b>OMINAISUUDET</b>
• Ei vaadi rekisteröintiä, verkkopalveluja tai pilvitallennusta! Tämä lompakko on hajautettu ja suorayhteyksinen.
• Mahdollisuus näyttää Bitcoin-varat määrissä BTC, mBTC ja µBTC.
• Yksikkömuunnos valtioiden valuuttojen välillä.
• Bitcoinien lähettäminen ja vastaanottaminen NFC, QR-koodien tai Bitcoin-URL-osotteiden avulla.
• Kun et ole verkkoyhteyden ulottuvilla, voit silti maksaa Bluetoothin välityksellä.
• Järjestelmän ilmoitus vastaanotetuille Bitcoineille.
• Paperisen lompakon pyyhkäisymahdollisuus (esim. näitä käytetään "kylmissä varastoissa").
• Android-sovellus Bitcoin-varojen hallintaan.
<b>OSALLISTU</b>
Bitcoin Wallet on <b>avointa lähdekoodia</b> ja <b>vapaa ohjelmisto</b>. Lisenssi: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Lähdekoodi saatavilla GitHub:sta:
https://github.com/bitcoin-wallet/bitcoin-wallet
Kaikki käännökset on hallinnoitu Transifex:n kautta:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Käytä omalla vastuulla!</i>
================================================
FILE: market/market-description-fr.txt
================================================
<b>Ayez vos bitcoins toujours avec vous dans votre poche !</b> Payez rapidement en balayant un code QR. En tant que marchand, vous recevez les paiements de manière fiable et instantanée. Bitcoin Wallet est la première appli Bitcoin mobile et sans doute aussi la plus sûre !
<b>CARACTÉRISTIQUES</b>
• Aucun inscription, service Web ou nuage n’est requis ! Ce porte-monnaie est décentralisé et pair à pair.
• Affichage du montant de bitcoins en BTC, mBTC et µBTC.
• Conversion vers et à partir de monnaies nationales.
• Envoi et réception de bitcoins par NFC, codes QR ou URL Bitcoin.
• Quand vous êtes hors ligne, vous pouvez quand même payer par Bluetooth.
• Notification du système pour les pièces reçues.
• Balayage des porte-monnaie de papier (c.-à-d. ceux utilisés pour le stockage à froid).
• Widget de l’appli pour le solde de bitcoins.
• Sécurité : prend en charge SegWit et le nouveau format bech32.
• Confidentialité : prend Tor en charge avec l’appli séparée Orbot.
<b>CONTRIBUER</b>
Bitcoin Wallet est un <b>logiciel à code source ouvert</b> et <b>libre</b>. Licence : GPLv3
https://www.gnu.org/licenses/gpl-3.0.fr.html
Notre code source se trouve sur GitHub :
https://github.com/bitcoin-wallet/bitcoin-wallet
Toutes les traductions sont gérées sur Transifex :
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Utilisez à vos propres risques !</i>
================================================
FILE: market/market-description-he.txt
================================================
שא את הביטקוין שלך עליך ללא תלות בשרות חיצוני, העבר או קבל כסף בקלות על ידי ברקוד, הכנסת כתובת או תקשורת מגע (NFC). כסוחר, אתה תקבל תשלומים בצורה בטוחה ומיידית. ארנק הביטקוין הוא היישום הנייד הראשון לביטקוין, וכנראה גם המאובטח ביותר!
תכונות:
• אין צורך בהרשמה, שירות אינטרנט או ענן. הארנק הוא מבוזר ומעמית-לעמית.
• הצגת היתרה בביטקוין, מילי-ביט או מיוביט.
• המרה למטבעות מקומיים.
• קבלה ושליחה של ביטקוינים דרך NFC, קוד QR או באמצעות כתובות ביטקוין.
• כשאתה לא מחובר לרשת, עדיין תוכל לשלם באמצעות Bluetooth.
• התראות מערכת על קבלת מטבעות.
• גריפת ארנקי נייר (כלומר, אלו המשמשים לצבירה קרה)
• וידג'ט לבדיקת יתרת הביטקוין שלך
אם אתה רוצה לתרום לפרויקט ארנק הביטקוין, הפרויקט ממוקם ב
https://github.com/bitcoin-wallet/bitcoin-wallet
רישיון : GPLv3
שים לב: השימוש הוא באחריות המשתמש.
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-hi.txt
================================================
अपनी जेब में, हमेशा के लिए अपने बिटकोइंस रखे ! आप QR-कोड स्कैन करके जल्दी से भुगतान कर सकते हैं एक व्यापारी के रूप में,आप जल्दी से और विश्वसनीयता से भुगतान प्राप्त कर सकते हैं. बिटकोइन बटुआ पहला मोबाइल बिटकोइन एप्लीकेशन है और यक़ीनन सबसे सुरक्षित है
विशेषताएं
• कोई पंजीकरण, वेब सेवा या बादल की जरूरत नहीं ! यह बटुआ विकेन्द्रीकृत और निजी है।
•राष्ट्रीय मुद्राओं मै ओर से रूपांतरण।
• एनएफसी, QR कोड या Bitcoin यूआरएल के माध्यम से Bitcoin प्राप्त करना
• आप ऑफ़लाइन हो, तब भी आप ब्लूटूथ के माध्यम से भुगतान कर सकते हैं।
• प्राप्त सिक्कों के लिए प्रणाली अधिसूचना।
• जेब की सफ़ाई(जैसे कोल्ड स्टोरेज के लिए इस्तेमाल किया जाता हे)
• Bitcoin संतुलन के लिए ऐप विजेट।
योगदान
bitcoin वॉलेट <b> खुला स्रोत </ b> और <b> मुफ्त सॉफ्टवेयर है । लाइसेंस: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
हमारे स्रोत कोड GitHub पर उपलब्ध है:
https://github.com/bitcoin-wallet/bitcoin-wallet
सभी अनुवाद Transifex के माध्यम से प्रबंधित कर रहे हैं:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
अपने जोखिम पर उपयोग करें!
================================================
FILE: market/market-description-hr.txt
================================================
<b>Imaj svoje Bitcoin-e uvijek sa sobom, u svom džepu.</b> Plaćaj brzim skeniranjem QR koda. Kao trgovac, primaj uplate sigurno i brzo. Bitcoin Wallet je prva mobilna Bitcoin aplikacija, i ne porecivo najsigurnija!
<b>ZNAČAJKE</b>
• Bez registracije, web servis ili cloud potreban! Ovaj novčanik je de-centraliziran i klijent prema klijentu.
• Prikaži Bitcoin iznos u BTC, mBTC i uBTC.
• Pretvorba u ili iz nacionalnih valuta.
• Slanje i primanje Bitcoina s NFC, QR kodom ili Bitcoin URL-om.
• Kada si izvan mreže, možete još uvijek preko Bluetooth-a.
• Sistemske obavjesti za primljene coin-ove.
• Widgeti aplikacije za balansiranje Bitcoin-ova.
<b>DOPRINOS</b>
Bitcoin Wallet je <b>javno dostupan kod</b> i <b>besplatna aplikacija</b>. Licencirana pod GPLv3.
https://www.gnu.org/licenses/gpl-3.0.en.html
Naš izvorni kod je dostušan na GitHub-u:
https://github.com/bitcoin-wallet/bitcoin-wallet
Sve transakcije se provode preko Transifex-a:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Koristi na svoj vlastiti rizik.</i>
================================================
FILE: market/market-description-hu.txt
================================================
<b>Mindig legyenek nálad a Bitcoin-jaid a zsebedben!</b> Úgy tudsz fizetni, hogy gyorsan beolvasol egy QR kódot. Kereskedőként megkapod a fizetséget megbízhatóan és azonnal. A Bitcoin Wallet az első mobil Bitcoin alkalmazás és vitathatatlanul a legbiztonságosabb is!
<b>JELLEMZŐK</b>
• Nincs regisztráció és nem szükséges semmiféle háttéralkalmazás futtatása (web, vagy cloud)! Decentralizált és közvetlen (P2P).
• Bitcoin összeg megjelenítési módok: BTC, mBTC és µBTC.
• Átváltás a saját valutádra, oda-vissza.
• Bitcoin küldés és fogadás NFC-n, QR kódokon vagy Bitcoin URL-eken keresztül.
• Offline állapotban is fizethetsz - Bluetooth segítségével.
• Rendszerüzenet Bitcoin érkezésekor.
• Papírtárcák besöprése (pl. amik hűtőháznak vannak használva).
• Widget a Bitcoin egyenlegről.
<b>HOZZÁJÁRULÁS</b>
A Bitcoin Wallet <b>nyílt forráskódú</b> és <b>ingyenes szoftver</b>. Licenc: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
A forráskódunk elérhető a GitHub-on:
https://github.com/bitcoin-wallet/bitcoin-wallet
Minden fordítást a Transifex kezelt:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Saját felelősségedre használd!</i>
================================================
FILE: market/market-description-id.txt
================================================
Dengan aplikasi ini Anda selalu mempunyai Bitcoin dengan Anda, dalam saku Anda! Anda dapat mengirim pembayaran hanya dengan memindai kode-QR atau mendekatkan dua ponsel bersama (NFC). Bitcoin Wallet dirancang untuk mudah digunakan dan diandalkan, sementara juga menjadi lebih aman dan cepat.
FITUR:
• Tidak diperlukan server awan atau layanan web! Dompet ini benar-benar peer ke peer.
• Tampilkan saldo dompet dalam Bitcoin dan mata uang lainnya.
• Mengirim dan menerima Bitcoin via NFC, kode-QR atau Tautan Bitcoin.
• Masukkan transaksi saat offline, akan dilaksanakan ketika online.
• Notifikasi sistem untuk konektivitas Bitcoin dan menerima koin.
• Widget Apl untuk saldo Bitcoin.
Jika Anda ingin berkontribusi kepada Bitcoin Wallet, proyeknya berada di
https://github.com/bitcoin-wallet/bitcoin-wallet
Lisensi: GPLv3
Gunakan dengan resiko Anda!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-it.txt
================================================
<b>Porta i tuoi Bitcoin sempre con te, in tasca!</b> Paghi velocemente scansionando un QR-code. Come un commerciante, riceverai i pagamenti sicuri e istantanei. Bitcoin Wallet è la prima Bitcoin app mobile, e probabilmente anche la più sicura!
<b>CARATTERISTICHE</b>
• Non è necessaria alcuna registrazione, servizio web o cloud! Questo portafoglio è de-centralizzato e peer to peer.
• Mostra l'ammontare di Bitcoin in BTC, mBTC e µBTC.
• Conversione verso e dalle monete nazionali.
• Invio e ricevimento di Bitcoin tramite NFC, codici QR o URL Bitcoin.
• Quando sei offline, puoi comunque ancora pagare via Bluetooth.
• Sistema di notifica per le monete ricevute.
• Svuotamento di portafogli cartacei (es: quelli utilizzati come depositi offline)
• App Widget per il saldo Bitcoin
<b>CONTRIBUISCI</b>
Bitcoin Wallet è <b>open source</b> e <b>software libero</b>. Licenza: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Il nostro codice sorgente è disponibile su GitHub
https://github.com/bitcoin-wallet/bitcoin-wallet
Tutte le traduzioni sono gestite attraverso Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Usala a tuo rischio!</i>
================================================
FILE: market/market-description-iw.txt
================================================
שא את הביטקוין שלך עליך ללא תלות בשרות חיצוני, העבר או קבל כסף בקלות על ידי ברקוד, הכנסת כתובת או תקשורת מגע (NFC). כסוחר, אתה תקבל תשלומים בצורה בטוחה ומיידית. ארנק הביטקוין הוא היישום הנייד הראשון לביטקוין, וכנראה גם המאובטח ביותר!
FEATURES:
• אין צורך בהרשמה, שירות אינטרנט או ענן. הארנק הוא מבוזר ומעמית-לעמית.
• הצגת היתרה בביטקוין, מילי-ביט או מיוביט.
• המרה למטבעות מקומיים.
• קבלה ושליחה של ביטקוינים דרך NFC, קוד QR או באמצעות כתובות ביטקוין.
• כשאתה לא מחובר לרשת, עדיין תוכל לשלם באמצעות Bluetooth.
• התראות מערכת על קבלת מטבעות.
• וידג'ט לבדיקת יתרת הביטקוין שלך
אם אתה רוצה לתרום לפרויקט ארנק הביטקוין, הפרויקט ממוקם ב
https://github.com/bitcoin-wallet/bitcoin-wallet
רישיון : GPLv3
שים לב: השימוש הוא באחריות המשתמש.
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-ja.txt
================================================
<b>ビットコインを持ち歩こう、いつでもあなたのポケットに!</b> QRコードスキャンで素早く支払えます。販売者としても、即座にかつ確実に支払いを受取れます。 Bitcoin Walletは初めてのモバイルビットコインアプリであり、そして間違いなく最も安全なアプリでもあります!
<b>特徴</b>
• 登録必要なし、ウェブサービスもクラウドもいりません! このウォレットは分散型P2Pです。
• BTC、mBTC、μBTCでのビットコインの表示。
• 自国通貨へ、または自国通貨からの変換表示。
• NFC、QRコード、ビットコインURLでの送金や受取。
• オフラインの時でもBluetoothで支払い可能。
• コイン受取の通知。
• ペーパーウォレットをスィープ(例. コールドストレージ用)
• ビットコイン残高のためのウィジェット。
・安全性: SegWitと新しいbech32フォーマットをサポート。
• プライバシー: 別途インストールしたOrbotアプリを通じてTorをサポート。
<b>開発に協力ください</b>
Bitcoin Walletは<b>オープンソース</b>であり、<b>自由ソフトウェア</b>です。ライセンス: GPLv3
https://www.gnu.org/licenses/gpl-3.0.ja.html
ソースコードはGithubにあります。
https://github.com/bitcoin-wallet/bitcoin-wallet
全ての翻訳はTransifexで管理されています:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>自己責任でお使いください!</i>
================================================
FILE: market/market-description-ko.txt
================================================
<b>주머니에 항상 넣어다닐 수 있는 비트코인 지갑!</b> QR 코드를 통해 빠르게 비트코인 결제가 가능합니다. 판매자의 경우 안전하고 빠르게 대금을 받을 수 있습니다. 비트코인 지갑(Bitcoin Wallet)은 최초의 모바일 비트코인 앱이며 최고의 보안을 자랑합니다!
<b>특징</b>
• 회원 가입이나 별도의 인증 과정이 없는 P2P 기반의 지갑
• 다양한 비트코인 단위 설정 - BTC, mBTC, µBTC
• 모든 국가별 비트코인 평가 환율 제공
• 비트코인 URL, QR 코드, NFC를 통해 비트코인 거래 가능
• 오프라인일 때에도 블루투스를 통해 거래 가능
• 비트코인 수신 시 시스템의 자동 알림 기능
• 종이 지갑(오프라인 형태로 사용되는 출력물)에서 가져오기
• 전 세계 모든 통화별 잔액 표시 기능
<b>도움받은 곳</b>
비트코인 지갑은 <b>오픈소스</b>이며 <b>무료 소프트웨어</b>입니다. 라이센스 정책 : GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
소스 코드는 깃허브(GitHub)에서 볼 수 있습니다.
https://github.com/bitcoin-wallet/bitcoin-wallet
모든 번역은 Transifex 웹사이트를 통해 이루어집니다.
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>이 앱을 사용하는 것은 앱 사용에 따른 위험에 동의하는 것입니다!</i>
================================================
FILE: market/market-description-mk.txt
================================================
Имај ги твоите Биткоини секогаш со тебе, во твојот џеб! Плаќањето се одвива со брзо скенирање на QR код. Како трговец, можеш да примаш плаќања доверливо и без одложување. Биткоин Паричник е првата мобилна Биткоин апликација и веројатно најсигурната!
ОДЛИКИ:
• Без регистрација, веб сервис или информации во облакот! Овој паричник е децентрализиран, со peer to peer конекција.
• Прикажување на Биткоин сумата во BTC и mBTC.
• Конверзија во и од национални валути.
• Испраќање и примање на Биткоин преку NFC, QR кодови или Биткоин интернет адреса.
• Кога си офлајн, сѐ уште можеш да плаќаш преку Bluetooth.
• Системско известување за примени биткоини.
• Апликациски виџет за Биткоин салдо.
Ако сакаш да придонесеш за Биткоин Паричник, проектот е лоциран на
https://github.com/bitcoin-wallet/bitcoin-wallet
License: GPLv3
Користи на сопствен ризик!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-nb.txt
================================================
<b>Ha alltid dine bitcoins med deg, i lommen din!</b> Du betaler ved å raskt skanne en QR-kode. Som en kjøpmann, får du betaling pålitelig og kjapt. Bitcoin Wallet er den første Bitcoin mobilappen, og kanskje også den sikreste!
<b>FUNKSJONER</b>
• Ingen registrering, webtjeneste eller sky trengs! Denne lommeboken er desentralisert og peer-to-peer.
• Visning av bitcoinbeløpet i BTC, mBTC og μBTC.
• Konvertering til og fra nasjonale valutaer.
• Sende og motta bitcoin via NFC, QR-koder eller Bitcoin-URLer.
• Når du er frakoblet, kan du fortsatt betale via blåtann.
• Systemvarsling for mottatte mynter.
• Sveiping av papirlommebøker (f.eks. de som brukes til kaldlagring).
• Miniprogram for saldo over bitcoins.
<b>BIDRA</b>
Bitcoin Wallet har <b>åpen kildekode</b> og er <b>fri programvare</b>. Lisens: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Vår kildekode er tilgjengelig på GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Alle oversettelser skjer via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Bruk på eget ansvar!</i>
================================================
FILE: market/market-description-nl.txt
================================================
<b>Draag je Bitcoins altijd bij je, in je broekzak!</b> Je kunt vlot betalen door een QR-code te scannen. Als winkelier ontvang je je betalingen betrouwbaar en onmiddelijk. Bitcoin Wallet is de eerste mobiele Bitcoin-app, en misschien wel de veiligste!
<b>EIGENSCHAPPEN</b>
• Geen registratie, webservice of cloud vereist! Deze portemonnee is decentraal en peer-to-peer.
• Toon Bitcoin bedrag in BTC, mBTC en µBTC.
• Conversie van en naar nationale valuta.
* Verzend en ontvang Bitcoin via NFC, QR-codes of Bitcoin-URL's
• Offline kun je nog steeds betalen via Bluetooth.
• Systeemmelding wanneer je Bitcoins ontvangt
• Opname van papieren portemonnee (b.v. voor cold storage).
• App widget voor Bitcoin saldo.
• Veiligheid: Ondersteunt SegWit en het nieuwe bech32-format.
• Privacy: Ondersteunt Tor via de externe Orbot-app.
<b>HELP MEE</b>
Bitcoin Wallet is <b>open source</b> en <b>free software</b>. Licentie: GPLv3
https://www.gnu.org/licenses/gpl-3.0.nl.html
Onze broncode is beschikbaar op GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Alle vertalingen worden geregeld via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Gebruik op eigen risico!</i>
================================================
FILE: market/market-description-pl.txt
================================================
<b>Miej swoje Bitcoiny zawsze przy sobie, w Twojej kieszeni!<b> Możesz płacić przez szybkie zeskanowanie QR kodu. Jako sprzedawca otrzymujesz przelew szybko i bezpiecznie. Bitcoin Wallet jest pierwszą mobilną Bitcoin aplikacją oraz jest uważany za najbardziej bezpieczną.
<b>NOWOŚCI</b>
• Bez rejestracji, przeglądarki i połączenia z chmurą. Ten portfel jest zdecentralizowany i peer-to-peer.
• Wyświetlaj ilość bitcoinów w BTC, mBTC lub µBTC.
• Przelicznik z/do walut narodowych.
• Wysyłaj i otrzymuj bitcoiny przy pomocy NFC, QRcode lub Bitcoin URL.
• Kiedy jesteś offline możesz nadal płacić przy pomocy Bluetooth.
• Powiadomienia o otrzymaniu monet.
• Zamiatanie portfeli papierowych (np. Używanych do przechowywania w chłodni).
• Widget z saldem Bitcoinów.
<b>PRZYCZYNIĆ SIĘ</b>
Bitcoin Wallet to oprogramowanie typu <b>open source</b> i <b>free software</b>. Licencja: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Nasz kod źródłowy jest dostępny na GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Wszystkie tłumaczenia są zarządzane przez Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Używasz na własne ryzyko!</i>
================================================
FILE: market/market-description-pt-BR.txt
================================================
<b>Tenha os seus Bitcoins sempre com você, no seu bolso!</b> Efetue pagamentos rapidamente apenas escaneando um código QR. Como comerciante, você pode receber pagamentos de forma confiável e instantânea. A Bitcoin Wallet foi o primeiro aplicativo móvel criado para o Bitcoin, sendo um dos mais seguros!
<b>CARACTERÍSTICAS</b>
• Não requer cadastro em nenhum serviço! Esta carteira é descentralizada e "ponto a ponto (P2P)".
• Exibe a quantidade de Bitcoins em BTC, mBTC e µBTC.
• Conversão para moedas nacionais.
• Envio e recebimento de Bitcoins via NFC, códigos QR ou endereços Bitcoin.
• Quando você estiver off-line, você ainda pode pagar via Bluetooth.
• O recebimento de bitcoins é informado nas notificações do sistema.
• Varredura de carteiras de papel (usadas para armazenamento offline).
• Widget para saldo de Bitcoins.
<b>CONTRIBUA</b>
A Bitcoin Wallet é um <b>software livre</ b> e com <b>código aberto</ b>. Licença: GPLv3
https://www.gnu.org/licenses/gpl-3.0.pt-br.html
Nosso código fonte está disponível no GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Todas as traduções são gerenciadas através do site Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Use por sua conta e risco!</i>
================================================
FILE: market/market-description-pt-PT.txt
================================================
<b>Tenha as suas Bitcoins sempre consigo, no seu bolso! Você paga digitalizando rapidamente um código QR. Como um comerciante, recebe pagamentos de uma forma segura e instantânea. Bitcoin Wallet é a primeira aplicação Bitcoin móvel, e possivelmente também a mais segura!
<b>FUNCIONALIDADES</b>
• Não é necessário registo, serviço da Web ou nuvem! Esta carteira é descentralizada e de par-a-par.
• Exibir o valor Bitcoin em BTC, mBTC e µBTC.
• Conversão de e para as moedas nacionais.
• Enviar e receber Bitcoins via NFC, códigos QR ou URLs Bitcoin.
• Quando estiver off-line, ainda pode pagar via Bluetooth.
• Notificação do sistema para as moedas recebidas.
• Limpeza de carteiras de papel (por exemplo, aquelas utilizadas para armazenamento reservado).
• Widget da aplicação para o saldo de Bitcoins.
<b>CONTRIBUIR</b>
Bitcoin Wallet é de <b>código aberto</b> e um <b>software livre</b>. Licença: GPLv3
https://www.gnu.org/licenses/gpl-3.0.pt-br.html
O nosso código fonte está disponível em GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Todas as traduções são geridas via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Utilize por sua conta e risco!</i>
================================================
FILE: market/market-description-ru.txt
================================================
<b>Всегда носите ваши биткоины с собой в вашем кармане!</b> Оплачивайте простым сканированием QR кода. Это надежный и быстрый способ получения оплаты для продавцов. Bitcoin Wallet это первый и наиболее безопасный мобильный кошелек для биткоинов!
<b>ОСОБЕННОСТИ</b>
• Ни какой регистрации не требуется! Это децентрализованный кошелек в сети, где все узлы равны (peer to peer).
• Отображает значение Bitcoin в BTC, mBTC и µBTC.
• Конвертация в национальные валюты и обратно.
• Отправка и получение Bitcoin при помощи NFC, QR кодов или Bitcoin адресов (URLs).
• В оффлайне можно использовать Bluetooth для платежей.
• Системные уведомления о поступивших платежах.
• Снятие средств с бумажных кошельков (Сипользуются для "холодного" хранения).
• Виджет для отображения баланса.
• Безопасность: Поддерживает SegWit и новый формат bench32.
• Конфиденциальность: Поддержка Tor через отдельное приложение Orbot.
<b>УЧАСТИЕ</b>
Bitcoin Wallet это <b>распространяется с исходным кодом</b> как <b>свободное ПО</b>. На условиях лицензии: GPLv3
https://www.gnu.org/licenses/gpl-3.0.ru.html
Исходный код доступен на GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Все переводы сделаны через Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Используйте на свой страх и риск!</i>
================================================
FILE: market/market-description-sk.txt
================================================
Bitcoiny vždy so sebou vo svojom vrecku. Jednoduché a rýchle platby pomocou QR kódov. Pre obchodníkov ponúka spoľahlivé a okamžité prijímanie platieb. Bitcoin Wallet je prvá mobilná Bitcoin aplikácia a preukázateľne aj najbezpečnejšia.
FUNKCIE:
• Nie je potrebná žiadna registrácia ani žiadny účet.
• Zobrazenie zostatku Bitcoinov v BTC alebo mBTC.
• Prepočet hodnoty Bitcoinov do viacerých cudzích mien.
• Posielanie a prijímanie Bitcoinov pomocou NFC, QR kódov alebo Bitcoin adries.
• V offline režime je platba možná aj cez Bluetooth.
• Notifikácie v stavovej lište pri prijatí Bitcoinov.
• Widget s celkovým zostatkom.
Ak chcete prispieť do projektu Bitcoin Wallet nájdete ho na adrese
https://github.com/bitcoin-wallet/bitcoin-wallet
Licencia: GPLv3
Použitie len na vlastné riziko!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-sl.txt
================================================
Nosite svoje novce vedno s seboj v žepu. Plačila so hitra, le prečitate QR-kodo. Tudi prejemanje plačil je zanesljivo in takojšnje. Bitcoin Wallet je prva mobilna aplikacija za bitcoin in najbrž tudi najbolj varna!
LASTNOSTI:
• Potrebna ni nobena registracija, spletna storitev ali oblak! Ta denarnica deluje povsem decentralizirano in vrstniško.
• Prikaz zneskov v BTC, mBTC ali µBTC.
• Samodejna pretvorba v evre in druge lokalne valute.
• Pošiljanje in prejemanje bitcoinov prek NFC, QR-kod ali bitcoin URL-jev.
• Z bitcoinom lahko plačujete tudi, če nimate povezave.
• Sistemska obvestila ob prejetih novcih.
• Widget, ki prikazuje stanje v denarnici.
Če želite prispevati k aplikaciji Bitcoin Wallet, se nam pridružite na
https://github.com/bitcoin-wallet/bitcoin-wallet
Licenca: GPLv3
Uporaba na lastno odgovornost!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-sq.txt
================================================
<>Mbani Bitcoin-at e juaj gjithmonë me ju, në xhepin tuaj!</b> Paguani shpejt duke skanuar një QR kod. Si tregtar, pranoni pagesat lehtë dhe menjëherë. Bitcoin Wallet është Bitcoin aplikacioni i parë mobil, dhe gjithashtu më i sigurti!
<b>VEÇORIT</b>
• Nuk kërkohet regjistrim, ueb shërbim apo cloud! Kjo kulet është e de-centralizuar dhe 'peer to peer'.
• Shfaq shumën e Bitcoins në BTC, mBTC dhe µBTC.
• Konvertimi nga monedhat nacionale.
• Dërgimi dhe pranimi i Bitcoin-ave me anë të NFC, QR kodeve ose Bircoin URL-ve.
• Kur jeni offline, ju prap mund të paguani përmes Bluetooth.
• Sistemi i lajmërimit për pranimin e monedhave.
• Shpenzimi i kuletave në letër (p.sh. ato të cilat përdoren për 'cold storage').
• Shtesa e programit për bilancin e monedhave.
<b>KONTRIBUOJ</b>
Bitcoin Wallet është <b>kod i hapur</b> dhe <b>softuer i lirë</b>. Licenca: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Kodi jonë burimor është i hapur në GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Të gjitha përkthimet menagjohen nga Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Përdoreni në përgjegjësin tuaj!<i>
================================================
FILE: market/market-description-sv.txt
================================================
<b>Ha alltid dina bitcoin med dig i fickan!</b> Du betalar snabbt genom att skanna en QR-kod. Handlare får betalningar tillförlitligt och omedelbart. Bitcoin Wallet är den första mobila bitcoin-appen, och utan tvekan den mest säkra!
<b>FUNKTIONER</b>
• Ingen registrering, web- eller molntjänst behövs! Bitcoin Wallet är decentraliserad och peer-to-peer.
• Visa summa bitcoin i BTC, mBTC eller µBTC.
• Konvertering till och från nationella valutor.
• Skicka och ta emot bitcoin via NFC, QR-koder eller en Bitcoin-URL.
• När du är nedkopplad kan du fortfarande betala via Bluetooth.
• Meddelande om mottagna bitcoin.
• Inläsning av pappersplånbok (t.ex. sådan som används för permanent lagring).
• App-widget som visar ditt saldo.
<b>BIDRA</b>
Bitcoin Wallet är <b>öppen mjukvara</b> och <b>fri mjukvara</b>. Licens: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Vår källkod finns tillgänglig på GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
All översättning hanteras via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Används på egen risk!</i>
================================================
FILE: market/market-description-tr.txt
================================================
<b>Bitcoin'leriniz daima cebinizde sizinle olsun!</b> Herhangi bir QR kodunu okutarak çabuk ödeme yapabilirsiniz. Bir tüccar olarak ödemeleri güvenle ve anında alabilirsiniz. Bitcoin Wallet ilk mobil ve muhtemelen en güvenli Bitcoin uygulamasıdır!
<b>ÖZELLİKLER</b>
• Kayıt olmaya, web ya da bulut hizmetine gerek yoktur. Bu cüzdan merkezsiz ve eşten eşedir.
• Bitcoin miktarını BTC, mBTC ve µBTC olarak göster.
• Ulusal para birimlerine ve bu para birimlerinden dönüştürme.
• QR kodları, Bitcoin bağlantıları ve yakın alan iletişimi ile Bitcoin alımı ve gönderilmesi.
• Çevrimdışı olduğunuzda Bluetooth vasıtasıyla ödemeler.
• Alınan bitcoin'ler için sistem bildirimleri.
• Kağıt cüzdanların taranması (mesela soğuk depolama için kullanılanlar).
• Bitcoin bakiyesini görüntüleyen widget.
<b>KATKIDA BULUNUN</b>
Bitcoin Wallet <b>açık kaynak</b> ve <b>özgür yazılımdır</b>. Lisans: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Kaynak kodumuz GitHub'da mevcuttur:
https://github.com/bitcoin-wallet/bitcoin-wallet
Tüm tercümeler Transifex üzerinde yönetilir:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Tüm riski siz üstlenmiş olursunuz!</i>
================================================
FILE: market/market-description-uk.txt
================================================
<b>Носіть Bitcoin завжди з собою, в кишені!</b> Оплачуйте швидко, скануючи QR-код. Якщо ви продавець, отримуйте оплату швидко і надійно. Гаманець Bitcoin — перший мобільний додаток для Bitcoin, і можливо найбезпечніший!
<b>Особливості</b>
• Не потрібна реєстрація, ані веб-сервіс, ані хмара! Цей гаманець децентралізований і є p2p.
• Показ суми Bitcoin в BTC, mBTC і µBTC.
• Конверсія із, та в національні валюти.
• Підтримка відправки та отримання засобів через NFC, QR-коди або Bitcoin URL.
• Коли ви не в мережі, ви можете оплачувати через Bluetooth.
• Системні сповіщення про отримані монети.
• Сканування паперових гаманців.
• Віджет для відображення балансу Bitcoin.
<b>ПІДТРИМКА</b>
Bitcoin Wallet це <b>безкоштовний додаток</b> з <b>відкритим початковим кодом</b>. Ліцензія: GPLv3
https://www.gnu.org/licenses/gpl-3.0.uk.html
Початковий код додатку доступний на GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
Всі переклади зроблені через Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Використувуйте на свій страх та ризик!</i>
================================================
FILE: market/market-description-vi.txt
================================================
Với ứng dụng này thì các Bitcoin sẽ luôn trong tầm kiểm soát của riêng bạn! Bạn có thể gửi các khoản chi trả thông qua thao tác cực kỳ đơn giản đó là quét mã dạng QR hoặc bằng cách chạm hai điện thoại vào nhau (NFC). Bitcoin Wallet được thiết với nguyên lý dễ dàng, tiện lợi, đáng tin tưởng, cũng như cực kỳ nhanh lẹ và đảm bảo an toàn cho người dùng.
TÍNH NĂNG:
• Không cần có cloud server hoặc dịch vụ web bổ sung nào cả! Ví tiền của bạn được kết nối thông qua sự lựa chọn của bạn trong kết nối mang ngang hàng lẫn nhau.
• Hiển thị trạng thái cân bằng tài khoản giữa Bitcoin và các loại tiền tệ khác.
• Gửi và nhận Bitcoin thông qua NFC, mã dạng QR hoặc đường dẫn liên kết dạng Bitcoin.
• Tham gia tiến trình giao dịch ngay khi không có kết nối mạng, và sẽ thực hiện kết nối ngay khi có mạng.
• Thông báo trong hệ thống theo tính nhanh gọn về số lượng Bitcoin nhận và gửi đi.
• Tiện ích dành riêng cho Bitcoin.
Nếu bạn có ý tưởng đóng góp cho Bitcoin Wallet, hãy truy cập vào trang web
https://github.com/bitcoin-wallet/bitcoin-wallet
Giấy phép: GPLv3
Sử dụng với sự cẩn trọng của riêng bạn!
http://www.gnu.org/licenses/gpl-3.0.en.html
================================================
FILE: market/market-description-zh-TW.txt
================================================
<b>隨身攜帶你的 Bitcoin,就在你的口袋中!<b>你可以掃描 QR 條碼快速付款。商家也可以安全又快速的完成請款。Bitcoin Wallet 是第一個可以在行動設備使用的 Bitcoin app,並自認為是最安全的一個!
<b>特點</b>
• 不需要註冊、不用登記網路服務、也不使用任何雲端服務!這個錢包 app 完全去中心,並使用對等網路(P2P)來服務。
• 可以顯示不同 Bitcoin 金額單位,如 BTC、mBTC 與 µBTC。
• 可以轉換各國貨幣。
• 可以透過 NFC、QR 條碼、或是 Bitcoin 付款網址來付款及收款。
• 可以在離線時使用藍芽付款。
• 可以在收到款項時通知提醒。
• 可以兌現紙錢包(及其他冷儲存的媒介)。
• Bitcoin 餘額桌面小工具。
<b>出力</b>
Bitcoin Wallet 既是<b>開放源碼</b>也是<b>自由軟體</b>。授權條款: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
我們的原始碼位在 GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
所有的翻譯工作都用 Transifex 管理:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>請自負使用風險!</i>
================================================
FILE: market/market-description-zh.txt
================================================
<b>将比特币随身携带在你自己的口袋中!</b> 扫描二维码快速支付,即时可靠的接收付款。比特币钱包 (Bitcoin Wallet) 是首选的、最安全的比特币应用!
<b>功能</b>
• 不需要注册,不需要网络服务,也不需要云!比特币钱包是“去中心化”、点对点的 (peer to peer)。
• 以 BTC, mBTC 以及 µBTC 为单位显示比特币金额。
• 从比特币转换为国家货币,或者从国家货币转换为比特币。
• 通过 NFC,二维码、比特币链接发送或接收比特币。
• 断网情况下仍然可以通过蓝牙付款。
• 收到比特币时显示系统通知。
• 与纸钱包交换比特币(纸钱包经常用于冷存储)。
• 应用程序小部件,用于显示比特币余额。
• 安全性:支持隔离见证(SegWit)以及最新的bech32格式。
• 隐私性:通过洋葱路由(Orbot)应用支持Tor网络。
<b>贡献</b>
Bitcoin Wallet 是 <b>开源项目</b> 和 <b>自由软件</b>,以 GPLv3 授权。
https://www.gnu.org/licenses/gpl-3.0.en.html
源代码托管在 GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
所有的本地化翻译均在 Transifex 上进行:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>请在使用时谨记风险!</i>
================================================
FILE: market/market-description.txt
================================================
<b>Have your Bitcoins always with you, in your pocket!</b> You pay by quickly scanning a QR code. As a merchant, you receive payments reliably and instantly. Bitcoin Wallet is the first mobile Bitcoin app, and arguably also the most secure!
<b>FEATURES</b>
• No registration, web service or cloud needed! This wallet is de-centralized and peer to peer.
• Display of Bitcoin amount in BTC, mBTC and µBTC.
• Conversion to and from national currencies.
• Sending and receiving of Bitcoin via NFC, QR codes or Bitcoin URLs.
• When you're offline, you can still pay via Bluetooth.
• System notification for received coins.
• Sweeping of paper wallets (e.g. those used for cold storage).
• App widget for Bitcoin balance.
• Safety: Supports SegWit and the new bech32 format.
• Privacy: Supports Tor via the separate Orbot app.
<b>CONTRIBUTE</b>
Bitcoin Wallet is <b>open source</b> and <b>free software</b>. License: GPLv3
https://www.gnu.org/licenses/gpl-3.0.en.html
Our source code is available at GitHub:
https://github.com/bitcoin-wallet/bitcoin-wallet
All translations are managed via Transifex:
https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/
<i>Use at your own risk!</i>
================================================
FILE: market/market-promo-text-ar.txt
================================================
البتكوين الخاصة بك، في جيبك !
================================================
FILE: market/market-promo-text-ca.txt
================================================
Els teus Bitcoins, a la teva butxaca!
================================================
FILE: market/market-promo-text-cs.txt
================================================
Vlastní Bitcoiny ve vlastní kapse!
================================================
FILE: market/market-promo-text-cy.txt
================================================
Dy Fitcoin dy hun, yn dy boced dy hun!
================================================
FILE: market/market-promo-text-da.txt
================================================
Dine egne Bitcoins i din egen lomme!
================================================
FILE: market/market-promo-text-de.txt
================================================
Deine eigenen Bitcoins, in deiner eigenen Tasche!
================================================
FILE: market/market-promo-text-el.txt
================================================
Τα δικά σας Bitcoin, στην τσέπη σας!
================================================
FILE: market/market-promo-text-eo.txt
================================================
Viaj propraj Bitmonoj, en via propra poŝo!
================================================
FILE: market/market-promo-text-es.txt
================================================
¡Tus propios Bitcoins, en tu propio bolsillo!
================================================
FILE: market/market-promo-text-fa.txt
================================================
بیت کوین های شما، در کیف پول خودتان!
================================================
FILE: market/market-promo-text-fi.txt
================================================
Pidä Bitcoinisi omassa taskussasi!
================================================
FILE: market/market-promo-text-fr.txt
================================================
Vos bitcoins, dans votre poche !
================================================
FILE: market/market-promo-text-he.txt
================================================
הביטקוינים שלך, בכיס שלך!
================================================
FILE: market/market-promo-text-hi.txt
================================================
आपके अपने बिटकोइंस , आपकी अपनी पॉकेट में !
================================================
FILE: market/market-promo-text-hr.txt
================================================
Tvoji vlastiti Bitcoin-ovi, u tvome džepu!
================================================
FILE: market/market-promo-text-hu.txt
================================================
Tartsd a zsebedben Bitcoin érméidet!
================================================
FILE: market/market-promo-text-id.txt
================================================
Anda memiliki Bitcoin, dalam saku Anda sendiri!
================================================
FILE: market/market-promo-text-it.txt
================================================
I tuoi Bitcoin, nella tua tasca!
================================================
FILE: market/market-promo-text-iw.txt
================================================
הביטקוינים שלך, בכיס שלך!
================================================
FILE: market/market-promo-text-ja.txt
================================================
君のビットコインを、君のポケットに!
================================================
FILE: market/market-promo-text-ko.txt
================================================
내 주머니, 내 비트코인!
================================================
FILE: market/market-promo-text-mk.txt
================================================
Твоите лични Биткоини, во твојот сопствен џеб!
================================================
FILE: market/market-promo-text-nb.txt
================================================
Dine egne bitcoins, i din egen lomme!
================================================
FILE: market/market-promo-text-nl.txt
================================================
Je eigen bitcoins, in je eigen zak!
================================================
FILE: market/market-promo-text-pl.txt
================================================
Twoje Bitcoiny w Twojej kieszen!
================================================
FILE: market/market-promo-text-pt-BR.txt
================================================
Seus Bitcoins em seu bolso!
================================================
FILE: market/market-promo-text-pt-PT.txt
================================================
As suas próprias Bitcoins, estão sempre consigo!
================================================
FILE: market/market-promo-text-ru.txt
================================================
Ваши собственные биткоины в вашем собственном кармане!
================================================
FILE: market/market-promo-text-sk.txt
================================================
Tvoje vlastné Bitcoiny, v Tvojom vlastnom vrecku!
================================================
FILE: market/market-promo-text-sl.txt
================================================
Vaši novci v vašem žepu!
================================================
FILE: market/market-promo-text-sq.txt
================================================
Bitcoin-monedhat tuaja, në xhepin tuaj!
================================================
FILE: market/market-promo-text-sv.txt
================================================
Dina egna bitcoin, i din egen ficka!
================================================
FILE: market/market-promo-text-tr.txt
================================================
Kendi Bitcoinleriniz, kendi cebinizde!
================================================
FILE: market/market-promo-text-uk.txt
================================================
Ваші Bitcoin, у вашій власній кишені!
================================================
FILE: market/market-promo-text-vi.txt
================================================
Bitcoin của riêng bạn, trong túi tiền của riêng bạn!
================================================
FILE: market/market-promo-text-zh-TW.txt
================================================
你的 Bitcoin 就在自己的口袋裡!
================================================
FILE: market/market-promo-text-zh.txt
================================================
将您自己的比特币装进您自己的口袋!
================================================
FILE: market/market-promo-text.txt
================================================
Your own Bitcoins, in your own pocket!
================================================
FILE: sample-integration-android/AUTHORS
================================================
Andreas Schildbach <andreas@schildbach.de>
================================================
FILE: sample-integration-android/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="de.schildbach.wallet.integration.sample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="15" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<application android:label="Bitcoin in-app payment sample">
<activity
android:name="de.schildbach.wallet.integration.sample.SampleActivity"
android:theme="@android:style/Theme.Light">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
================================================
FILE: sample-integration-android/COPYING
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
================================================
FILE: sample-integration-android/build.gradle
================================================
plugins {
id 'com.android.application'
}
configurations {
all*.exclude group: 'com.google.android', module: 'android'
}
dependencies {
implementation project(':integration-android')
implementation 'org.bitcoinj:bitcoinj-core:0.14.7'
}
android {
compileSdkVersion 'android-19'
buildToolsVersion '29.0.3'
defaultConfig {
dexOptions {
preDexLibraries false
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'org/bitcoinj/crypto/mnemonic/wordlist/english.txt'
exclude 'org/bitcoinj/crypto/cacerts'
exclude 'org.bitcoin.production.checkpoints.txt'
exclude 'org.bitcoin.test.checkpoints.txt'
exclude '**/*.java'
}
}
================================================
FILE: sample-integration-android/res/layout/sample_activity.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:orientation="vertical">
<RadioGroup
android:layout_width="256dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/sample_network_mainnet"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Mainnet" />
<RadioButton
android:id="@+id/sample_network_testnet"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="Testnet" />
</RadioGroup>
<TextView
style="@android:style/TextAppearance.Medium"
android:layout_width="256dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="This demonstrates the integration of a "Donate Bitcoins" button in your app." />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1">
<Button
android:id="@+id/sample_donate_button"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Donate" />
</FrameLayout>
<TextView
style="@android:style/TextAppearance.Medium"
android:layout_width="256dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="Here is a more complex request for a payment to two addresses." />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1">
<Button
android:id="@+id/sample_request_button"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Request" />
</FrameLayout>
<TextView
android:id="@+id/sample_donate_message"
style="@android:style/TextAppearance.Medium"
android:layout_width="256dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:minLines="5"
android:visibility="invisible" />
</LinearLayout>
</ScrollView>
================================================
FILE: sample-integration-android/src/de/schildbach/wallet/integration/sample/SampleActivity.java
================================================
/*
* Copyright the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.schildbach.wallet.integration.sample;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.TypefaceSpan;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import com.google.protobuf.ByteString;
import de.schildbach.wallet.integration.android.BitcoinIntegration;
import org.bitcoin.protocols.payments.Protos;
import org.bitcoinj.core.Address;
import org.bitcoinj.core.AddressFormatException;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.script.ScriptBuilder;
/**
* @author Andreas Schildbach
*/
public class SampleActivity extends Activity {
private static final long AMOUNT = 500000;
private static final String[] DONATION_ADDRESSES_MAINNET = { "18CK5k1gajRKKSC7yVSTXT9LUzbheh1XY4",
"1PZmMahjbfsTy6DsaRyfStzoWTPppWwDnZ" };
private static final String[] DONATION_ADDRESSES_TESTNET = { "mkCLjaXncyw8eSWJBcBtnTgviU85z5PfwS",
"mwEacn7pYszzxfgcNaVUzYvzL6ypRJzB6A" };
private static final String MEMO = "Sample donation";
private static final int REQUEST_CODE = 0;
private Button donateButton, requestButton;
private TextView donateMessage;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_activity);
donateButton = (Button) findViewById(R.id.sample_donate_button);
donateButton.setOnClickListener(v -> handleDonate());
requestButton = (Button) findViewById(R.id.sample_request_button);
requestButton.setOnClickListener(v -> handleRequest());
donateMessage = (TextView) findViewById(R.id.sample_donate_message);
}
private String[] donationAddresses() {
final boolean isMainnet = ((RadioButton) findViewById(R.id.sample_network_mainnet)).isChecked();
return isMainnet ? DONATION_ADDRESSES_MAINNET : DONATION_ADDRESSES_TESTNET;
}
private void handleDonate() {
final String[] addresses = donationAddresses();
BitcoinIntegration.requestForResult(SampleActivity.this, REQUEST_CODE, addresses[0]);
}
private void handleRequest() {
try {
final String[] addresses = donationAddresses();
final NetworkParameters params = Address.getParametersFromAddress(addresses[0]);
final Protos.Output.Builder output1 = Protos.Output.newBuilder();
output1.setAmount(AMOUNT);
output1.setScript(ByteString
.copyFrom(ScriptBuilder.createOutputScript(new Address(params, addresses[0])).getProgram()));
final Protos.Output.Builder output2 = Protos.Output.newBuilder();
output2.setAmount(AMOUNT);
output2.setScript(ByteString
.copyFrom(ScriptBuilder.createOutputScript(new Address(params, addresses[1])).getProgram()));
final Protos.PaymentDetails.Builder paymentDetails = Protos.PaymentDetails.newBuilder();
paymentDetails.setNetwork(params.getPaymentProtocolId());
paymentDetails.addOutputs(output1);
paymentDetails.addOutputs(output2);
paymentDetails.setMemo(MEMO);
paymentDetails.setTime(System.currentTimeMillis());
final Protos.PaymentRequest.Builder paymentRequest = Protos.PaymentRequest.newBuilder();
paymentRequest.setSerializedPaymentDetails(paymentDetails.build().toByteString());
BitcoinIntegration.requestForResult(SampleActivity.this, REQUEST_CODE,
paymentRequest.build().toByteArray());
} catch (final AddressFormatException x) {
throw new RuntimeException(x);
}
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
final String txHash = BitcoinIntegration.transactionHashFromResult(data);
if (txHash != null) {
final SpannableStringBuilder messageBuilder = new SpannableStringBuilder("Transaction hash:\n");
messageBuilder.append(txHash);
messageBuilder.setSpan(new TypefaceSpan("monospace"), messageBuilder.length() - txHash.length(),
messageBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
if (BitcoinIntegration.paymentFromResult(data) != null)
messageBuilder.append("\n(also a BIP70 payment message was received)");
donateMessage.setText(messageBuilder);
donateMessage.setVisibility(View.VISIBLE);
}
Toast.makeText(this, "Thank you!", Toast.LENGTH_LONG).show();
} else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(this, "Cancelled.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Unknown result.", Toast.LENGTH_LONG).show();
}
}
}
}
================================================
FILE: settings.gradle
================================================
import org.gradle.util.GradleVersion
import org.gradle.api.GradleScriptException
// required Gradle version
def minGradleVersion = GradleVersion.version("4.4")
if (GradleVersion.current() < minGradleVersion)
throw new GradleScriptException("build requires Gradle ${minGradleVersion} or later", null)
include 'wallet'
include 'integration-android'
//include 'sample-integration-android'
================================================
FILE: wallet/AUTHORS
================================================
Coding, Graphics:
Andreas Schildbach <andreas@schildbach.de>
Localizations:
Russian: Artem Grunichev <gluk@umbrosia.ru>
Spanish: Ángel José Riesgo <ariesgo@nubaria.com>, Francesc <shawe.ewahs@gmail.com>, Macarse <macarse@gmail.com>
Italian: Dusty - http://ilporticodipinto.it/bitcoin
Polish: Meo <miaumeo@gmx.de>
Chinese: Li <licecil.ce@gmail.com>, 阳波 <023yangbo@gmail.com>
French: Pierre Noizat <pierre.noizat@paymium.com>
Dutch: KwukDuck <kwukduck@gmail.com>
Swedish: Mats Henricson <mats@henricson.se>
Greek: Christos Pateropoulos <cpaterop@gmail.com>
Czech: @shmoula - http://www.shmoula.cz
German: Andreas Schildbach <andreas@schildbach.de>
Turkish: Anonymous
Hebrew: Eran Shlomo <shlomo.eran@gmail.com>
Vietnamese: Phan Anh
Portuguese: Marco Dantas
Danish: Thomas Pryds <thomas@pryds.eu>
Traditional Chinese (zh-TW): Y12Studio <y12studio@gmail.com>
Korean: bitPremiers.co.kr, sorumfactory.com
================================================
FILE: wallet/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="de.schildbach.wallet"
android:installLocation="internalOnly">
<!-- normal permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- dangerous permissions -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- group: CAMERA -->
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.nfc"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.front"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="false" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.software.app_widgets"
android:required="false" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:name="de.schildbach.wallet.WalletApplication"
android:hasFragileUserData="true"
android:allowBackup="false"
android:icon="@drawable/ic_app_color"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="24">
<activity
android:name="de.schildbach.wallet.ui.WalletActivity"
android:configChanges="keyboard|keyboardHidden"
android:exported="true"
android:label="@string/app_name_short"
android:launchMode="singleTask"
android:theme="@style/My.Theme.WithSplash" />
<activity-alias
android:name="de.schildbach.wallet.WalletActivity"
android:targetActivity="de.schildbach.wallet.ui.WalletActivity">
<intent-filter android:label="@string/app_name_short">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:mimeType="application/x-dogetx" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity-alias>
<activity
android:name="de.schildbach.wallet.ui.send.SendCoinsActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/send_coins_activity_title"
android:theme="@style/My.Theme.ChildActivity"
android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/send_coins_activity_title">
<action android:name="android.intent.action.VIEW" />
<data android:scheme="dogecoin" />
<data android:scheme="DOGECOIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter android:label="@string/send_coins_activity_title">
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:scheme="dogecoin" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter android:label="@string/send_coins_activity_title">
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="application/vnd.doge.payment.request" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter android:label="@string/send_coins_activity_title">
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:mimeType="application/vnd.doge.payment.request" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="de.schildbach.wallet.ui.SendCoinsQrActivity"
android:configChanges="keyboard|keyboardHidden"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
<activity
android:name="de.schildbach.wallet.ui.RequestCoinsActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/request_coins_activity_title"
android:theme="@style/My.Theme.ChildActivity"
android:windowSoftInputMode="adjustResize" />
<activity
android:name="de.schildbach.wallet.ui.AddressBookActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/address_book_activity_title"
android:theme="@style/My.Theme.ChildActivity" />
<activity
android:name="de.schildbach.wallet.ui.ExchangeRatesActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/exchange_rates_activity_title"
android:theme="@style/My.Theme.ChildActivity" />
<activity
android:name="de.schildbach.wallet.ui.monitor.NetworkMonitorActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/network_monitor_activity_title"
android:theme="@style/My.Theme.ChildActivity" />
<activity
android:name="de.schildbach.wallet.ui.preference.PreferenceActivity"
android:label="@string/preferences_activity_title"
android:theme="@style/My.Theme.ChildActivity" />
<activity
android:name="de.schildbach.wallet.ui.backup.BackupWalletActivity"
android:configChanges="orientation|keyboard|keyboardHidden"
android:theme="@style/My.Theme.Dialog" />
<activity
android:name="de.schildbach.wallet.ui.backup.RestoreWalletFromExternalActivity"
android:configChanges="orientation|keyboard|keyboardHidden"
android:theme="@style/My.Theme.Dialog">
<intent-filter android:label="@string/import_keys_intent_filter_action">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/x-dogecoin-wallet-backup" />
</intent-filter>
</activity>
<activity
android:name="de.schildbach.wallet.ui.scan.ScanActivity"
android:configChanges="keyboard|keyboardHidden"
android:stateNotNeeded="true"
android:theme="@style/My.Theme.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name="de.schildbach.wallet.ui.send.SweepWalletActivity"
android:configChanges="keyboard|keyboardHidden"
android:label="@string/sweep_wallet_activity_title"
android:theme="@style/My.Theme.ChildActivity"
android:windowSoftInputMode="adjustResize" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.file_attachment"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider" />
</provider>
<receiver
android:name="de.schildbach.wallet.WalletBalanceWidgetProvider"
android:label="@string/appwidget_wallet_balance_title">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/wallet_balance_widget" />
</receiver>
<service
android:name="de.schildbach.wallet.service.StartBlockchainService"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name="de.schildbach.wallet.service.BlockchainService"
android:exported="false" />
<service
android:name="de.schildbach.wallet.offline.AcceptBluetoothService"
android:exported="false" />
<receiver android:name="de.schildbach.wallet.service.BootstrapReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
<meta-data
android:name="android.nfc.disable_beam_default"
android:value="true" />
</application>
</manifest>
================================================
FILE: wallet/CHANGES
================================================
v8.08
* Update translations from Transifex.
* Based on bitcoinj 0.15.9.
v8.04-v8.07
* Trusted peers with custom TCP ports are now supported. Use the IPv4:port or [IPv6]:port syntax.
v8.0-v8.03
* The app now requires Android 6.0 (Marshmallow) or higher.
* On modern devices: Introduce a blockchain synchronization mode that prioritizes privacy vs data usage.
v7.62-v7.69
* Allow multiple trusted peers by separating them with a space character.
v7.60-v7.61
* Visual overhaul of the transactions list.
v7.59
* Visual overhaul of the exchange rates list.
v7.58
* Visual overhaul of the network monitor.
v7.57
* Visual overhaul of the address book.
v7.56
* Remove the ability to directly add an address to the address book from the clipboard due to safety concerns.
The QR code scanner can still be used, and addresses you've already sent to can be added as well.
v7.55
* Minor bugfixes.
v7.52-v7.54
* Get rid of the last internal content provider; replace it with a repository and an SQLite database.
v7.50-v7.51
* Use CoinGecko.com for exchange rates, as BitcoinAverage.com is currently broken.
* The color of the transaction confirmation indicator has been changed. It now starts red with one confirmation,
slowly blending to green for 7 confirmations.
* On Android 9 and older, switched the app-widget back to dark. On Android 10, use the dark/light system setting.
v7.47-v7.49
* Restructure the settings page.
* Update translations from Transifex.
v7.46
* Improve offline payments via Bluetooth for Android 8.1 (Oreo) and up.
Merchants should configure their own Bluetooth address in the settings.
v7.44-v7.45
* Fix a build reproducibility issue.
* Update translations from Transifex.
v7.43
* Customize the connectivity notification in trusted peer mode.
v7.42
* Fix layout on 10in tablets.
v7.41
* Fix issue with not being able to send due to blockchain replay.
* Based on bitcoinj 0.15.6.
v7.38-v7.40
* Improve design of app-widget.
* Update translations from Transifex.
v7.37
* Directly link from the settings to the notification settings.
v7.36
* More improvements on blockchain sync.
v7.35
* Implement light mode for app-widget.
v7.34
* Directly link from the settings to the data usage settings.
v7.33
* Show progress in connectivity notification.
* Update translations from Transifex.
v7.32
* Enabled Java 8 language features.
v7.30-v7.31
* Use storage access framework for restoring wallet backups.
* More improvements on blockchain sync.
v7.28-v7.29
* Various improvements on blockchain sync.
v7.27
* Use Gradle build variants for testnet (dev) and mainnet (prod) flavors.
* Notifications are now subtly colored.
* On Android 10, when uninstalling the app users have the choice to keep their wallet in app-private storage.
* Update translations from Transifex.
v7.25-v7.26
* Fix wallet not syncing in the background on modern devices.
v7.24
* Various optimizations.
v7.23
* Update Android Gradle plugin to 3.1.0.
This means it doesn't build reproducably without external help like 'disorderfs'.
See https://issuetracker.google.com/issues/110237303
* Modernize the sample-integration-android subproject a bit.
* Various small bugfixes.
v7.22
* Fix issue with confirmation of transactions that empty your wallet.
* Based on bitcoinj 0.15.5.
v7.21
* Update translations from Transifex.
v7.20
* Reduce memory usage of PIN-protected wallets.
* Tapping on the app's version will reveal a checksum of the APK that was installed.
* Based on bitcoinj 0.15.4.
v7.19
* Introduce dark mode on Android 10 devices.
v7.18
* Improve performance by a bit.
v7.16-v7.17
* Count devices with a memory class of 128 MB as low-ram.
v7.15
* Handle edge case when restoring via an external app.
* Reduce Scrypt iterations for non-64-bit devices.
* Update translations from Transifex.
v7.14
* Remove native code from app.
* Update translations from Transifex.
* Based on bitcoinj 0.15.3.
v7.13
* Add confidence messages, helping users to understand the confidence state of their payments.
v7.11-v7.12
* Various small bugfixes.
v7.10
* Segregated Witness - Phase IV: Existing wallets with spending PIN can be upgraded by changing or removing the PIN.
v7.09
* Based on bitcoinj 0.15.2.
v7.08
* Fix issue with sweeping paper wallets.
v7.07
* Segregated Witness - Phase III: Existing wallets without spending PIN are upgraded to use native segwit (Bech32) addresses.
v7.06
* Make more room for transactions list by scrolling away the balance panel.
* Various design changes.
v7.05
* Various small bugfixes.
v7.04
* Fix issue with sweeping paper wallets.
v7.03
* Double the capacity of the block store.
v7.02
* Segregated Witness - Phase II: Receive to and spend from native segwit (Bech32) addresses.
* Option to request coins to a legacy address (in case a sender doesn't support Bech32).
v7.0-v7.01
* Segregated Witness - Phase I: Send to native segwit (Bech32) addresses.
* The app now requires Android 5.0 (Lollipop) or higher.
* Based on bitcoinj 0.15.
v6.41
* Use the Unicode Bitcoin symbol if available.
* Backup verification, just to be safe.
* Update translations from Transifex.
v6.40
* Fix transaction fee is shown as a positive amount in the history.
v6.39
* Update the API used for sweeping paper wallets.
v6.38
* Update translations from Transifex.
v6.36-v6.37
* Remove ability to restore backups from list of base58-encoded private keys.
v6.35
* Fix crashes when opening dialogs at the wrong time.
v6.34
* Migrate support libraries and architecture components to AndroidX.
* Add another backup reminder.
v6.33
* Fix rarely occurring crash when backing up the wallet.
v6.32
* Remove link to Google+ community.
* Update link to direct APK download.
v6.31
* For Android 9.0 (Pie) and above, the FOREGROUND_SERVICE permission is now being requested.
* Adds a network security configuration.
v6.29-v6.30
* The app now builds reproducible.
v6.27-v6.28
* Use the Room Persistence Library for access to the address book database.
v6.25-v6.26
* Update translations from Transifex.
v6.24
* Use live exchange rates, rather than 24h-averages.
v6.23
* Update build to Gradle 3.3+ and Android Plugin for Gradle 2.3.3.
v6.20-v6.22
* Bugfixes.
v6.19
* Run circular reveal transition if QR code scanner is started via lower action bar.
v6.18
* The QR code scanner now supports portrait orientation.
v6.12-v6.17
* Bugfixes.
v6.11
* A splash icon is shown while the app is loading.
* Performance optimizations.
v6.10
* Bugfix.
v6.09
* Performance optimizations.
v6.08
* Based on bitcoinj 0.14.7.
v6.07
* Performance optimizations.
v6.04-v6.06
* Bugfixes.
v6.03
* In payment history, always show fiat amount directly below Bitcoin value.
v6.02
* Bugfix.
v6.01
* Economic fee can now go much lower.
* Fix certain payments not showing up until they are confirmed.
* Based on bitcoinj 0.14.6.
v6.0
* The app now requires Android 4.4 (KitKat) or higher.
* Backing up makes use of the Storage Access Framework (SAF). For most users,
this means encrypted backups are stored on Google Drive, but other cloud
storage providers can also be used.
v5.45
* Clarify message when fetching/validating the payment request fails.
v5.44
* Add live.blockcypher.com to block explorers and remove blockexplorer.com.
* Update translations from Transifex.
v5.42-v5.43
* Add a warning dialog regarding a relatively high fee.
v5.41
* Fix crash with very inflated fiat currencies.
v5.40
* Update dependencies.
v5.39
* Adjust the static network fees used for sanity checks and fallbacks.
v5.38
* Fix crash on Pixel 2 devices.
v5.37
* Use a lot less memory for displaying QR codes.
v5.36
* Update translations from Transifex.
* Bugfix.
v5.34-v5.35
* New alert for users with insecure Bluetooth.
v5.33
* Two bugfixes.
v5.32
* For Android 7.0 (Nougat) and above, multiple 'coins received' notifications
are bundled into a notification group.
v5.31
* Disconnects from incompatible peers much quicker.
* Based on bitcoinj 0.14.5.
v5.30
* For Android 8.0 (Oreo) and above, support notification channels and adaptive
launcher icons.
v5.29
* Fix crash when archiving a wallet backup on some devices.
v5.27-v5.28
* Fix app shortcuts for Android 7.1 devices.
* Remove labs feature: Look up wallet names from the domain name system.
v5.26
* Add blocktrail.com to block explorers.
* Remove unused features.
v5.25
* Adjust the static network fees used for sanity checks and fallbacks.
v5.24
* Update translations from Transifex.
v5.23
* Fix problem with sweeping paper wallets.
v5.20-v5.22
* Adjust the static network fees used for sanity checks and fallbacks.
v5.19
* Update translations from Transifex.
* Minor bugfixes.
v5.18
* Add technical notes.
* Update translations from Transifex.
v5.17
* Bugfix.
v5.16
* Improve app startup time.
* Fix 'raise fee' was raising the fee too much.
v5.15
* Block sending payments while blockchain replay is in progress.
v5.14
* Update translations from Transifex.
* Bugfix.
v5.13
* Add option to report issue with selected payment.
* Add blockchain.info to block explorers.
* Minor bugfix.
v5.12
* Query a set of Electrum servers to swipe paper wallets. Biteasy can't be used any more,
because they are closing down.
v5.11
* Update translations from Transifex.
* Remove biteasy from block explorers because they are closing down.
* Minor bugfixes.
v5.10
* Minor bugfix.
v5.09
* Material design for Android 5.0 (Lollipop) and above!
v5.08
* Minor bugfix.
v5.07
* For Android 7.1 (Nougat) and above, support the new app shortcuts.
v5.06
* Minor bugfix.
v5.05
* For Android 6.0 (Marshmellow) and above, bring back the ability to receive payments via
Bluetooth. This means your customers can pay without being connected to the internet!
* Nicely animated appearance of main screen on phones.
v5.04
* Switch exchange rates feed to BitcoinAverage API v2.
* Update translations from Transifex.
* Minor bugfix.
v5.03
* Work around broken exchange rate.
v5.02
* Dynamic network fee. This will help dealing with an overloaded Bitcoin network.
v5.01
* Fix background color in recent tasks list.
* The testnet version doesn't make files world readable any more.
* Adjust the normal fee category.
v5.0
* The app now requires Android 4.1 (Jelly Bean) or higher. This makes UI development easier
in future.
* Fix detection of network state. This needs the ACCESS_NETWORK_STATE permission.
v4.72
* Minor bugfix.
v4.71
* Update translations from Transifex.
* Minor bugfixes.
v4.70
* Supports HTTP/2 and ALPN on all HTTP calls (e.g. payment protocol).
* Slightly more robust scanning of QR codes.
* Minor bugfixes.
v4.69
* Strengthen security of spending PIN for all existing wallets, too.
v4.68
* Regression fix.
v4.67
* Speed up wallet decryption when using a spending PIN.
* Minor bugfix.
v4.66
* Strengthen security of spending PIN.
* Update translations from Transifex.
v4.65
* Fix for layout in landscape orientation.
v4.64
* Quick-fix regression: ANR coming from the QR code scanner back into the 'send coins' dialog.
v4.63
* Fix rotated camera image on some devices.
v4.62
* Message for a delayed confirmation of an incoming payment.
* Minor bugfixes.
v4.61
* On Android 6.0 (Marshmellow) and above, you can now grant or revoke app permissions at will.
The current permissions are: Camera (for scanning QR codes) and Read/Write External Storage (for
wallet backups).
* Fix a crash when trying to sweep a password protected paper wallet.
* Update translations from Transifex.
v4.60
* Fix a crash when scanning QR codes.
v4.59
* Make sure the lockscreen doesn't get in the way of scanning QR codes or requesting coins.
v4.58
* Adjust the normal fee category.
* Minor bugfix.
v4.57
* Adjust all fee categories.
v4.56
* Minor bugfixes.
* Based on bitcoinj 0.14.3.
v4.55
* Fix occasional crash while editing the 'pay to' field when sending coins.
v4.54
* Fix for rare wrong balance calculation.
* Labs: When sending coins, use DNSSEC to look up wallet names from the domain name system.
* Based on bitcoinj 0.14.2.
v4.53
* Fix crash when sweeping a paper wallet.
v4.52
* The network fee is now calculated on a per-byte basis, rather than per-kB. On average, this
means a lower fee!
* Based on bitcoinj 0.14.
v4.51
* Improve mechanism for setting a trusted peer and warn if its hostname cannot be resolved.
v4.50
* After a couple of weeks of not being used, the app will notify if there are still coins in the
wallet.
v4.49
* Update translations from Transifex.
* Based on bitcoinj 0.13.6.
v4.48
* Fix for crash when entering too large amounts.
* Add warning to RBF (replace-by-fee) transactions.
v4.47
* Automatically close send coins dialog if payment was successful. This can be disabled in the
settings.
* Consider RBF (replace-by-fee) transactions as risky, so for them wait for the first
confirmation.
* Update Catalan translation from Transifex.
* Based on bitcoinj 0.13.5.
v4.46
* Speculative fix for ANR.
v4.45
* Adjusts to the new network fee rules imposed by Bitcoin Core.
* Now requires Android 4.0.3 (ICS) for all subprojects.
* Update Russian, Italian, Turkish, Swedish, Spanish, Norwegian Bokmål, Japanese, Hungarian,
Finnish, Dutch, Danish, Traditional Chinese and Brazilian Portuguese translations.
* Based on bitcoinj 0.13.4.
v4.44
* Fix problem with sweeping paper wallets.
v4.43
* Switch default block explorer to blockexplorer.com.
* Hint to enable storage encryption.
* Update translations from Transifex.
v4.42
* Optimizations & bugfixes.
* Based on bitcoinj 0.13.3.
v4.41
* Add blockexplorer.com to block explorers used for browsing transactions, addresses and blocks.
* Update Dutch, Italian and Russian translations.
v4.40
* Bugfixes.
* Update Hungarian, French and Swedish translations.
v4.39
* Update Finnish translation.
* Based on bitcoinj 0.13.2.
v4.38
* Bugfixes.
* Update Korean translation.
v4.37
* Allow raising the fee of an unconfirmed transaction. Uses child-pays-for-parent (CPFP).
* Fix crash when sharing address.
v4.36
* Pay the default fee for sweeping paper wallets.
* Update Turkish, Swedish, Norwegian Bokmål, Japanese, Italian, Hungarian, French and Danish
translations.
* Based on bitcoinj 0.13.1.
v4.35
* Upwards-adjust default network fee again. We're forced to do this due to the high number of
spam transactions.
v4.34
* Setting for own name, to be added as a label/memo to payment requests.
* List animations for network monitor.
v4.33
* Upwards-adjust default network fee again. We're still way below estimated fee.
* Small bugfixes.
* Update Greek and Swedish translations.
* Migrate build from Maven to Gradle. This should make things easier for Android Studio users.
See README for building the app.
v4.32
* Bugfixes.
* In-app payments integration (integration-android) now available on Maven Central and jCenter.
Also see: https://github.com/bitcoin-wallet/bitcoin-wallet/wiki/InAppPayments
v4.31
* Update Italian, Spanish, Finnish and Japanese translations.
v4.30
* Upwards-adjust default fee, because transactions at the old fee level have become a bit slow.
You can switch back to 'economic' in the send coins options menu.
* Small bugfixes.
v4.29
* Nice slide-in animation for sent payment.
* Update Brazilian Portuguese, Danish, Japanese, French, Turkish and Norwegian Bokmål
translations.
* Small bugfixes.
v4.28
* Add Hindi and Croatian translations. Update Greek and Albanian.
* Design bugfixes.
v4.27
* Tint incoming transactions in green, outgoing in red.
* Tint action bar labels.
v4.26
* Material design for list of transactions.
* Update Albanian, Turkish, Finnish, Spanish, Russian, Norwegian Bokmål, Japanese, Italian,
French, Danish, Czech and Catalan translations.
v4.25
* Update android-maven-plugin to 4.2.0, so we can use AARs.
* Bugfixes.
v4.24
* Use action bar submenu for filtering wallet transactions, rather than a ViewPager.
* Speed up transactions list.
* Update QR-code scanner to ZXing 3.2.0.
v4.23
* Update Dutch and Albanian translations.
* Bugfixes.
v4.22
* Show derived addresses in address book under "your addresses".
* Show "to addresses" of received payments, rather than "from addresses".
* Speed up blockchain sync.
* Based on bitcoinj 0.12.3.
v4.21
* Bugfixes.
v4.20
* Improve entry of password in backup wallet dialog.
* Share current wallet address by tapping on it.
* Update dialogs to material theme on Lollipop devices.
* New translations into Albanian and Swahill.
* Update Spanish, Turkish, Russian, Brazilian Portuguese, Norwegian Bokmål, Japanese, Italian,
French, Finnish, Danish, Czech and Catalan translations.
v4.19
* Remove donate action.
v4.18
* Show and share extended public key. This can be used to grant read-only access to your wallet.
The new option is available in the diagnostics settings.
* Record fiat amount for sent payments.
v4.17
* Update action buttons to material design.
* Update Finnish, Catalan, Swedish, Brazilian Portuguese, Italian, Spanish, Russian, French,
Dutch, Czech and Chinese translations.
v4.16
* Important fix for when a wallet is restored via an external app, the QR code on the main screen
can still show an old address for a while.
v4.15
* Important fix for how old pre-version-3.47 wallet backups are restored.
* We're showing the backup warning for users with old wallets. If you see it, please refresh your
backup! It's time everybody is in possession of a backup using the current format.
v4.14
* Update Turkish, Norwegian Bokmål, Japanese, French and Danish translations.
* Small bugfixes.
v4.13
* Support sweeping of password-protected paper wallets (BIP38).
* Update Swedish translation.
* Update android-maven-plugin to 4.0.0, so the build should now be compatible to newer Maven versions.
* Update to ProGuard 5.1, making it possible to build with a Java 8 compiler.
v4.12
* Small bugfixes.
v4.11
* When sending coins, there is a "quick confirm" option which pays the old higher fee.
* Fix white/black screen that prevents some users from starting the app.
* Fix reuse of change address in some cases.
* Based on bitcoinj 0.12.2.
v4.10
* Fix sent transaction not updating on send coins screen.
* Fix compatibility issue to GMail 5 app when sending report attachments.
* Migrate clipboard to use Android 4 API.
v4.09
* Migrate preferences and NFC to use Android 4 API.
v4.08
* Update Norwegian Bokmål, Japanese, Danish, Finnish, Spanish, Catalan and Russian translations.
v4.07
* Performance improvements.
* Drop network fee by factor of 10.
* Support rotation for HD key chains.
* Based on bitcoinj 0.12.1.
v4.06
* The wallet can be protected by a spending PIN.
* Record memos read from payment requests.
v4.05
* Re-add textual Bitcoin address to enlarged QR code.
v4.04
* Small bugfixes.
v4.03
* Remove textual Bitcoin address from main screen.
* Warning for users with pay-to-many transactions. Those will slow down their
wallet.
* Workaround for crash in the network monitor.
v4.02
* Fix crash when sweeping wallets.
* New translation into Catalan.
* Update Korean, Russian, Italian and Danish translations.
v4.01
* New translation into Norwegian Bokmål.
* Small bugfix.
v4.0
* All Bitcoin addresses are now deterministically derived from one single secret,
which was created when you installed the app for the first time. So from now on,
only one backup is needed to recover all your future funds in that wallet.
* The app does its best to not reuse addresses any more. "Request coins" will use a
fresh address on each invocation. The current address in the QR code on the main
page changes as soon as coins are received on it.
* When sending coins, the fee is shown while you type and before you press "Send".
After sending, you'll see the paid fee in the transaction list.
* When sending coins, most errors are now shown already before you press Send.
* The app now requires Android 4.0.3 or higher. This makes UI development much
easier in future.
* The app has a fresher, sharper looking app icon. The icon for the testnet version
is now entirely grey.
* On Android 4.1 or higher, the app-widget is now horizontally resizable.
* Based on bitcoinj 0.12.
v3.59
* Resolve issue with restoring backups that have been renamed.
* Update Turkish, Korean, Ukrainian, Russian, Italian, French, Finnish and Danish translations.
* Remove BROADCAST_STICKY permission.
v3.58
* Small bugfixes.
v3.57
* App-widget: show approximate balance in local currency.
v3.55-v3.56
* New translation into Ukrainian. Update many other translations.
* Small bugfixes.
v3.54
* Support compressed keys when sweeping a wallet.
* Update Russian translation.
v3.53
* New translation into Finnish.
* Update Czech, Korean, Turkish, Spanish, Japanese, Hebrew and Italian translations.
v3.52
* Update French, Danish and Korean translations.
v3.51
* Sweeping of paper wallets (e.g. those used for cold storage).
* New translation into Korean.
* Small bugfixes.
v3.50
* Update Chinese, Danish, Italian and Japanese translations.
* Update QR-code scanner to ZXing 3.1.0.
* Small bugfixes.
* Based on bitcoinj 0.11.3.
v3.49
* Update French and Turkish translations.
* Small bugfixes.
v3.48
* Get rid of all NFC Android application records. This will improve interoperability with other
Android wallets.
v3.47
* Manual wallet backups now back up the whole wallet, not just the private keys. It also means
when restoring your wallet, the current (hopefully empty) wallet is thrown away. This change
is a requirement for (future) encrypted wallets, HD wallets and more.
* Filter exchange rates by a search query.
* Update Russian translation.
* Update QR-code scanner to ZXing 3.0.1.
* Small bugfixes.
v3.46
* New translation into Slovenian.
* Update Hebrew translation.
* Fix missing transactions due to once dusty outputs which are standard as of Bitcoin Core 0.9.
* Preparation for fetching payment requests via Bluetooth.
* Based on bitcoinj 0.11.2.
v3.44-v3.45
* Due to the OpenSSL "Heartbleed" vulnerability, removed all HTTPS network access on Android 4.1.1.
This means exchange rates will not be available, and the payment protocol cannot fetch
signature and cannot pay directly via HTTPS. The chances of an actual exploitability on
Android are very slim, but we want to stay on the safe side until things are clearer.
Also see http://heartbleed.com/
v3.41-v3.43
* Small bugfixes.
v3.40
* Support for µBTC denomination, for people who are used to low valued currencies.
* Always use BIP70 when sending payments directly via Bluetooth.
* Small bugfixes.
v3.39
* Usage of BIP70 when initiating payments via NFC (tap-to-pay) is now a supported feature.
* New translation into Arabic.
v3.38
* Supports BIP70 payment protocol for in-app payments.
* Accepting direct payments via Bluetooth is now a supported feature.
v3.37
* New translation into Japanese.
v3.36
* Small bugfix.
v3.35
* Protect wallet against dust spam.
* Fixed some bugs in the payment protocol.
* Based on bitcoinj 0.11.1.
v3.34
* Small bugfix.
v3.33
* Small bugfixes.
v3.32
* Support for BIP72 URI extension for payment protocol.
v3.31
* Default denomination has changed to millibitcoin (mBTC).
* Cross-calculated exchange rates for currencies without Bitcoin volume. Thanks to BitcoinAverage.
* Better handling of errors when sending coins, specifically when funds are exceeded.
* Labs: Uses BIP70 payment protocol for tap-to-pay and scan-to-pay, if enabled in the settings.
* New translations into Traditional Chinese, Macedonian and Esperanto. Updated Spanish.
* Resolved issues with wallets with many transactions.
* Based on bitcoinj 0.11.
v3.30
* improved battery usage
* new Danish translation
* updated Polish translation
v3.29
* fixed issues with fetching exchange rates
* new Slovak translation
* updated French, Hungarian, Italian and Portuguese translations
v3.28
* for those who still use the unsecure address (pre-August), moves coins to secure addresses
* updated Russian and Turkish translations
v3.27
* small improvements for future bugfixing
v3.26
* improve battery usage
* small bugfixes
v3.25
* support for mBTC denomination
* also use weighted exchange rates from BitcoinAverage
* fixed issue with camera autofocus on some Samsung Galaxy devices
v3.24
* fixed issue with stuck outgoing transactions
v3.23
* fixed issue with detecting online state
v3.22
* sound effect when sending a payment
* fixed rare issues with transactions missing or shown as unconfirmed
* Hungarian translation
* based on bitcoinj 0.10.2
v3.21
* bugfix
v3.20
* small improvements and bugfixes
v3.19
* use findbugs
* small bugfixes
v3.18
* Indonesian translation
* bluetooth offline transactions
* revamp of qr-code and nfc based offline transactions
* remove transaction details screen, link to blockexplorer.com instead
v3.17
* fixed issue with emptying wallet
* based on bitcoinj 0.10.1
v3.16
* backup reminder when creating new keys
* don't trigger blockchain sync because of plugging power
v3.15
* auto-rotate weak keys
* option for easy emptying wallet
* based on bitcoinj 0.10
v3.14
* Vietnamese and Portuguese (Brazil) translations
* small improvements
v3.13
* bugfix
v3.12
* direct button on main screen for scanning a Bitcoin request QR code
* extended logging
v3.11
* some small improvements and bugfixes
v3.10
* embed currency calculator into send and request coins forms
* change default Bitcoin precision from 8 to 4
v3.09
* calculate correct fee to ensure speedy blockchain confirmation
* based on bitcoinj 0.9
v3.08
* bugfixes
v3.07
* make request and send coins action buttons more visible
* stay connected a little bit longer if there was transaction activity on the wallet
v3.06
* merge peer monitor and block explorer into network monitor
* Hebrew translation
v3.05
* backup reminder for first-time users
v3.01-v3.04
* some small improvements and bugfixes
v3.0
* now requires Gingerbread (Android 2.3.3) or later
* export/import encrypted private key backups to/from mail or online storage
* switch to new block store format, uses seriously less internal storage and doesn't grow
(existing installs can be migrated by resetting the blockchain once)
* new installs are instantly fully updated and useable
* got rid of block chain snapshot in APK, installs updates much faster
* lots of small improvements and bugfixes
* based on bitcoinj 0.8
v2.49
* bugfixes
v2.48
* fix race condition when replaying blockchain
v2.47
* report issues from within the app
* new crash reporter
v2.46
* bugfixes
* based on bitcoinj 0.7.3
v2.45
* new labs feature: block explorer
* request coins from locally installed app
* save memory and stack
* based on bitcoinj 0.7.2
v2.44
* bugfixes
v2.43
* some small improvements and bugfixes
v2.42
* fixed crash on Froyo (Android 2.2) devices
* allow importing private keys from automatic backups
* based on bitcoinj 0.7.1
v2.41
* labs preference for setting bitcoin value precision
v2.40
* seriously reduced traffic and cpu usage due to usage of bloom filters
* faster connect to peers
* ability to spend your own change instantly
* no need to manually disconnect any more for any of the preferences
* preference for showing the connectivity indicator
* shortcut to request coins by long tapping on qr code
* peer monitor shows more info
* fallback for fetching exchange rates (bitcoincharts first, then blockchain)
* lots of small improvements and bugfixes
* based on bitcoinj 0.7
v2.39
* descriptions for transaction confidence states
v2.38
* fixed testnet3 blockchain sync problem
* based on bitcoinj 0.6.1
v2.37
* lots of small improvements and bugfixes
v2.36
* fixed exception when requesting coins on below Ice Cream Sandwich (Android 4.0)
v2.35
* lots of small improvements and bugfixes
v2.34
* embed qr code scanner for enhanced security
v2.33
* fixed error reporting
* minor UI enhancements
v2.32
* can import unencrypted private keys
* collect logfile for crash report on Jelly Bean (Android 4.1) and above
v2.31
* now requires Froyo (Android 2.2) or later
v2.3
* import private keys from external storage
* export private keys to external storage
v2.24
* migrated testnet to testnet3 (make sure to reset blockchain after upgrade)
* fixed various crashes when being offline
v2.23
* fixed updating of transaction list
* fixed stuck connectivity indicator
v2.22
* proper handling of coinbase transactions
* watch transaction propagation (build-up of confidence) when sending coins
* based on bitcoinj 0.6
* blockchain can be reset without exiting the app
v2.21
* low fee warning when sending coins
v2.20
* bugfix
v2.19
* bugfixes
* based on BitCoinJ 0.5.2
v2.18
* send and request buttons in app widget
* bugfixes
v2.17
* bugfixes
v2.16
* bugfixes
v2.15
* exponentially backoff autosync frequency
* updated French, Spanish, Swedish and Turkish translations
v2.14
* tries to stay on WIFI while autosyncing, but no guarantees (yet)
v2.13
* bugfixes
* based on BitCoinJ 0.5.1
v2.1
* based on BitCoinJ 0.5.0
* lots of UI work
* changes how long the P2P network stays connected
v2.01
* bugfixes
v2.0
* Turkish translation
v1.55
* unified address book for sending and receiving addresses
v1.54
* migrates wallets to protobuf format
* should be more stable, faster and future proof
================================================
FILE: wallet/COPYING
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
================================================
FILE: wallet/README.md
================================================
Technical details
=================
### FILES
Your wallet contains your private keys and various transaction related metadata. It is stored in app-private
storage:
Mainnet: /data/data/de.schildbach.wallet/files/wallet-protobuf
Testnet: /data/data/de.schildbach.wallet_test/files/wallet-protobuf-testnet
The wallet file format is not compatible to wallet.dat (Satoshi client). Rather, it uses a custom protobuf format
which should be compatible between clients using bitcoinj.
Certain actions cause automatic rolling backups of your wallet to app-private storage:
Mainnet: /data/data/de.schildbach.wallet/files/key-backup-protobuf
Testnet: /data/data/de.schildbach.wallet_test/files/key-backup-protobuf-testnet
Your wallet can be manually backed up to and restored from a share of the storage access framework (likely Google Drive):
Mainnet: bitcoin-wallet-backup-<yyyy-MM-dd-HH-mm>
Testnet: bitcoin-wallet-backup-testnet-<yyyy-MM-dd-HH-mm>
If you want to recover coins from manual backups and for whatever reason you cannot use the app
itself to restore from the backup, see the separate [README.recover.md](README.recover.md) guide.
The current fee rate for each of the fee categories (economic, normal, priority) is cached in
app-private storage:
Mainnet: /data/data/de.schildbach.wallet/files/fees.txt
Testnet: /data/data/de.schildbach.wallet_test/files/fees-testnet.txt
### DEBUGGING
Wallet file for Testnet can be pulled from an (even un-rooted) device using:
adb pull /data/data/de.schildbach.wallet_test/files/wallet-protobuf-testnet
Log messages can be viewed by:
adb logcat
The app can send extensive debug information. Use **Options > Settings > Report Issue** and follow the dialog.
In the generated e-mail, replace the support address with yours.
### BUILDING THE DEVELOPMENT VERSION
If you haven't done already, follow the **Prerequisites for Building** section in the [top-level README](../README.md).
It's important to know that the development version uses Testnet, is debuggable and the wallet file
is world readable/writeable. The goal is to be able to debug easily.
Finally, you can build Bitcoin Wallet and sign it with your development key. Again in your workspace,
use:
# each time
gradle clean test :wallet:assembleDevDebug
You'll find the signed APK under this path:
wallet/build/outputs/apk/dev/debug/bitcoin-wallet-dev-debug.apk
To install the app on your Android device, use:
gradle :wallet:installDevDebug
If installation fails, make sure "Developer options" and "USB debugging" are enabled on your Android device, and an ADB
connection is established.
### BUILDING THE PRODUCTIVE VERSION
At this point I'd like to remind that you continue on your own risk. According to the license,
there is basically no warranty and liability. It's your responsibility to audit the source code
for security issues and build, install and run the application in a secure way.
The production version uses Mainnet, is built non-debuggable, space-optimized with ProGuard and the
wallet file is protected against access from non-root users. It is built from the same branch (or
tag) as the development version. After you have cloned/updated the git repository as described above,
use:
# each time
gradle clean test :wallet:assembleProdRelease
You'll find the unsigned APK under this path:
wallet/build/outputs/apk/prod/release/bitcoin-wallet-prod-release-unsigned.apk
Apart from the missing signature and checksums in `META-INF/`, it should be identical to the APKs
provided via the app stores.
### SETTING UP FOR DEVELOPMENT
You can import the project into IntelliJ IDEA or Android Studio, as it uses Gradle for building.
### TRANSLATIONS
The source language is English. Translations for all languages except German [happen on Transifex](https://www.transifex.com/bitcoin-wallet/bitcoin-wallet/).
The English resources are pushed to Transifex. Changes are pulled and committed to the git
repository from time to time. It can be done by manually downloading the files, but using the `tx`
command line client is more convenient:
# first time only
sudo apt install transifex-client
If strings resources are added or changed, the source language files need to be pushed to
Transifex. This step will probably only be executed by the maintainer of the project, as special
permission is needed:
# push source files to Transifex
tx push -s
As soon as a translation is ready, it can be pulled:
# pull translation from Transifex
tx pull -f -l <language code>
Note that after pulling, any bugs introduced by either translators or Transifex itself need to be
corrected manually.
### NFC (Near field communication)
Bitcoin Wallet supports reading Bitcoin requests via NFC, either from a passive NFC tag or from
another NFC capable Android device that is requesting coins.
For this to work, just enable NFC in your phone and hold your phone to the tag or device (with
the "Request coins" dialog open). The "Send coins" dialog will open with fields populated.
Instructions for preparing an NFC tag with your address:
- We have successfully tested [this NFC tag writer](https://play.google.com/store/apps/details?id=com.nxp.nfc.tagwriter).
Other writers should work as well, let us know if you succeed.
- Some tags have less than 50 bytes capacity, those won't work. 1 KB tags recommended.
- The tag needs to contain a Bitcoin URI. You can construct one with the "Request coins" dialog,
then share with messaging or email. You can also construct the URI manually. Mainnet example:
`bitcoin:1G2Y2jP5YFZ5RGk2PXaeWwbeA5y1ZtFhoL`
- The type of the message needs to be URI or URL (not Text).
- If you put your tag at a public place, don't forget to enable write protect. Otherwise, someone
could overwrite the tag with his own Bitcoin address.
### BITCOINJ
Bitcoin Wallet uses [bitcoinj](https://bitcoinj.github.io/) for Bitcoin specific logic.
### EXCHANGE RATES
Bitcoin Wallet reads this feed from "CoinGecko" for getting exchange rates:
https://api.coingecko.com/api/v3/exchange_rates
We chose this feed because it is not dependent on a single exchange. This feature can be disabled
with the compile-time flag
Constants.ENABLE_EXCHANGE_RATES
### SWEEPING WALLETS
When sweeping wallets, Bitcoin Wallet uses a set of Electrum servers to query for unspent transaction
outputs (UTXOs). This feature can be disabled with the compile-time flag:
Constants.ENABLE_SWEEP_WALLET
================================================
FILE: wallet/README.recover.md
================================================
Recovering Bitcoins
===================
## PROLOGUE
This document describes how you can use a backup file on a standard PC to recover your Bitcoins.
Normally, this shouldn't be needed. It is much preferred to just use **Options > Safety > Restore wallet** from within the Bitcoin Wallet app if you can. This guide is only meant for rare cases:
- Your Android device is destroyed or missing and you do not want or cannot get a new Android
device.
- Legislation in your country forbids you to continue using the app and you missed the chance to
move your coins out while it was still legal.
- The app suddenly goes out of service for whatever reason. This event is extremely unlikely,
given the fact that the app is open source and many developers from all over the world have and
know the code.
Be aware some of the steps in this tutorial require handling your private keys in the unencrypted
form. Do not expose them to anyone. Whoever knows your private keys can spend your coins on these
keys. It'd good practice that after you are finished handling these keys, they should be
considered compromised, even if they are not. Make sure your system is free of any malware.
We recommend using Ubuntu Linux. You can boot from a Live CD if you want, but if you do please
refrain from sending your coins to a temporary wallet created in that environment, which would be
lost e.g. on a power outage or computer failure. Your desired destination wallet should already be
set up and you should have one of its receiving addresses or a QR code at hand.
Alternatively, you can also use Ubuntu on Windows 10 64-bit, if you've fully upgraded to the Fall Creators Update (version 1709 or later). Open the Windows Start Menu, search for and start `Turn Windows features on or off`. Scroll down and tick the `Windows Subsystem for Linux` feature. Restart your computer when prompted. Next, install `Ubuntu` from the Windows Store. Once the download has completed, select `Launch`. It will prompt you to pick a username and complete the installation. From now on, you can start into a Linux shell by selecting `Ubuntu` from the Windows Start Menu.
You should be at least a bit familiar with the Linux shell. Commands `in fixed-width font like this`
are meant to be executed as a shell command. Before you execute each command by pressing return,
make sure to understand what it does. You will need to adjust some file or directory names.
Commands starting with `sudo apt` will ask for your permission to install software by
requiring your Ubuntu user password.
## PREPARATION
On your PC, within your Linux shell, install the following Ubuntu packages:
sudo apt install openjdk-8-jdk android-tools-adb openssl git gradle
On your Android device, go to Settings > Developer options and enable "USB debugging". On most
recent devices you need to go to Settings > About first and tap on "Build number" multiple times
until you see the "You are now a developer" message.
## LOCATING THE BACKUP FILES
If you followed the app's guidance your backup files will be located on a share of the storage access framework, very likely your Google Drive. Watch out for filenames starting with `bitcoin-wallet-backup`.
Historically, the backup can also be saved to your email account (as a file attachment of an email sent to yourself) or on your SD card in the `/Download` folder. Just save the backup file to your PCs filesystem.
## DECRYPTING
You now have your backup file on your PC. Wallet backups are encrypted. Let's decrypt it using:
openssl enc -d -aes-256-cbc -md md5 -a -in bitcoin-wallet-backup-testnet-2014-11-01 > bitcoin-wallet-decrypted-backup
It will ask you for a decryption password, which is your backup password. If it prints
"bad password" you've got the wrong password, but if it doesn't print anything your password might
still be wrong. We can only be sure by looking at the decrypted data.
Historically there is two backup formats. Let's look at the first printable characters in the file:
cat bitcoin-wallet-decrypted-backup | tr -cd "[:print:]" | awk '{print $1}'
If it prints "org.bitcoin.production", you got the right password and the backup file uses the
bitcoinj protobuf format. This backup format was introduced in v3.47 (May 2014). Skip to
RECOVERING FROM PROTOBUF WALLET FORMAT.
If it prints just a hash sign (`#`), you got the right password and the backup file uses the old
text based private key format. Skip to RECOVERING FROM BASE58 KEY FORMAT.
If it prints something else or nothing, you likely didn't get the password right. Passwords are
case sensitive, and make sure you didn't accidentally type a space character in front or after the
password.
## RECOVERING FROM PROTOBUF WALLET FORMAT
We need wallet-tool from bitcoinj. First, in a working directory, let's get bitcoinj:
git clone -b release-0.15 https://github.com/bitcoinj/bitcoinj.git
Make sure everything is compiled and ready to go by using once:
cd bitcoinj/tools
./wallet-tool
Now use wallet-tool to sync the wallet from your backup:
./wallet-tool reset --wallet=/tmp/bitcoin-wallet-decrypted-backup
./wallet-tool sync --wallet=/tmp/bitcoin-wallet-decrypted-backup --debuglog
The sync process will take anywhere from a few minutes to hours. Wallet-tool will return to the
shell prompt if its finished syncing. Have a look at the wallet:
./wallet-tool dump --wallet=/tmp/bitcoin-wallet-decrypted-backup
Does the balance look right? You can see all transactions that ever touched your wallet. Now empty
your entire wallet to the desired destination wallet if that's what you want:
./wallet-tool send --wallet=/tmp/bitcoin-wallet-decrypted-backup --output=<receiving address of destination wallet>:ALL
If your wallet was protected by a spending PIN, you need to supply that PIN using the `--password=<PIN>` option.
Be extra careful with this command to get all parameters right. If it
succeeds, it will print the transaction hash of the created transaction. You can use that on
a block explorer to watch, or just open the destination wallet and watch from there. If your coins
are confirmed, you're done and you can skip the next paragraph to EPILOGUE.
You can also get a list of your private keys, e.g. to claim coins other than Bitcoin which may sit on the same keys. To dump the private keys use:
./wallet-tool dump --wallet=/tmp/bitcoin-wallet-decrypted-backup --dump-privkeys
Again, if your wallet was protected by a spending PIN, you need to supply that PIN using the `--password=<PIN>` option.
Look for `priv WIF=<...>`, where `<...>` will be your private keys in wallet import format. Be careful where you put them, as anybody getting access to them will be able to steal *all* your coins associated to that key, not only your Bitcoins! Unless you fully trust the security of the computer consider running it on an offline system with no network connectivity. Also, consider securely erasing any decrypted copy of your private keys once you've used them.
## RECOVERING FROM BASE58 KEY FORMAT
Have a deeper look at the backup file:
cat bitcoin-wallet-decrypted-backup
You'll see each line contains a key in WIF (wallet import format), technically Base58. The
datetime string after each key is the birthdate of that key which you can ignore for the purpose
of this one-time recovery.
You can import each individual key into a PC wallet like [Electrum](https://electrum.org)
or [Bitcoin Core](https://bitcoincore.org/).
As soon as you see your whole balance again, empty your entire wallet to the desired destination
wallet. Please do not continue to use the imported wallet. Remember you just operated on
unencrypted keys which can be dangerous, so it's good practic
gitextract_gt0kxvgh/
├── .github/
│ └── CONTRIBUTING.md
├── .gitignore
├── .tx/
│ └── config
├── README.md
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── integration-android/
│ ├── AUTHORS
│ ├── COPYING
│ ├── build.gradle
│ └── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ └── integration/
│ └── android/
│ └── BitcoinIntegration.java
├── market/
│ ├── market-description-ar.txt
│ ├── market-description-ca.txt
│ ├── market-description-cs.txt
│ ├── market-description-cy.txt
│ ├── market-description-da.txt
│ ├── market-description-de.txt
│ ├── market-description-el.txt
│ ├── market-description-eo.txt
│ ├── market-description-es.txt
│ ├── market-description-fa.txt
│ ├── market-description-fi.txt
│ ├── market-description-fr.txt
│ ├── market-description-he.txt
│ ├── market-description-hi.txt
│ ├── market-description-hr.txt
│ ├── market-description-hu.txt
│ ├── market-description-id.txt
│ ├── market-description-it.txt
│ ├── market-description-iw.txt
│ ├── market-description-ja.txt
│ ├── market-description-ko.txt
│ ├── market-description-mk.txt
│ ├── market-description-nb.txt
│ ├── market-description-nl.txt
│ ├── market-description-pl.txt
│ ├── market-description-pt-BR.txt
│ ├── market-description-pt-PT.txt
│ ├── market-description-ru.txt
│ ├── market-description-sk.txt
│ ├── market-description-sl.txt
│ ├── market-description-sq.txt
│ ├── market-description-sv.txt
│ ├── market-description-tr.txt
│ ├── market-description-uk.txt
│ ├── market-description-vi.txt
│ ├── market-description-zh-TW.txt
│ ├── market-description-zh.txt
│ ├── market-description.txt
│ ├── market-promo-text-ar.txt
│ ├── market-promo-text-ca.txt
│ ├── market-promo-text-cs.txt
│ ├── market-promo-text-cy.txt
│ ├── market-promo-text-da.txt
│ ├── market-promo-text-de.txt
│ ├── market-promo-text-el.txt
│ ├── market-promo-text-eo.txt
│ ├── market-promo-text-es.txt
│ ├── market-promo-text-fa.txt
│ ├── market-promo-text-fi.txt
│ ├── market-promo-text-fr.txt
│ ├── market-promo-text-he.txt
│ ├── market-promo-text-hi.txt
│ ├── market-promo-text-hr.txt
│ ├── market-promo-text-hu.txt
│ ├── market-promo-text-id.txt
│ ├── market-promo-text-it.txt
│ ├── market-promo-text-iw.txt
│ ├── market-promo-text-ja.txt
│ ├── market-promo-text-ko.txt
│ ├── market-promo-text-mk.txt
│ ├── market-promo-text-nb.txt
│ ├── market-promo-text-nl.txt
│ ├── market-promo-text-pl.txt
│ ├── market-promo-text-pt-BR.txt
│ ├── market-promo-text-pt-PT.txt
│ ├── market-promo-text-ru.txt
│ ├── market-promo-text-sk.txt
│ ├── market-promo-text-sl.txt
│ ├── market-promo-text-sq.txt
│ ├── market-promo-text-sv.txt
│ ├── market-promo-text-tr.txt
│ ├── market-promo-text-uk.txt
│ ├── market-promo-text-vi.txt
│ ├── market-promo-text-zh-TW.txt
│ ├── market-promo-text-zh.txt
│ └── market-promo-text.txt
├── sample-integration-android/
│ ├── AUTHORS
│ ├── AndroidManifest.xml
│ ├── COPYING
│ ├── build.gradle
│ ├── res/
│ │ └── layout/
│ │ └── sample_activity.xml
│ └── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ └── integration/
│ └── sample/
│ └── SampleActivity.java
├── settings.gradle
└── wallet/
├── AUTHORS
├── AndroidManifest.xml
├── CHANGES
├── COPYING
├── README.md
├── README.recover.md
├── README.specs.md
├── assets/
│ ├── bip39-wordlist.txt
│ ├── checkpoints.txt
│ ├── electrum-servers.txt
│ └── fees.txt
├── assets-prod/
│ ├── checkpoints.txt
│ ├── electrum-servers.txt
│ └── fees.txt
├── build.gradle
├── cpp/
│ ├── CMakeLists.txt
│ ├── config.h
│ ├── crypto_scrypt-nosse.c
│ ├── crypto_scrypt.h
│ ├── scrypt_jni.c
│ ├── scrypt_platform.h
│ ├── sha256.c
│ ├── sha256.h
│ └── sysendian.h
├── proguard.cfg
├── res/
│ ├── anim/
│ │ ├── slide_in_bottom.xml
│ │ ├── slide_in_left.xml
│ │ ├── slide_in_right.xml
│ │ ├── slide_in_top.xml
│ │ └── transaction_layout_anim.xml
│ ├── animator/
│ │ ├── fade_in_drawable.xml
│ │ ├── fade_in_view.xml
│ │ └── fade_out_drawable.xml
│ ├── color/
│ │ ├── bg_list_card.xml
│ │ ├── bg_list_card_transaction.xml
│ │ └── fg_on_dark_bg_network.xml
│ ├── drawable/
│ │ ├── action_mode_background.xml
│ │ ├── appwidget_background.xml
│ │ ├── background_splash.xml
│ │ ├── divider_currency.xml
│ │ ├── divider_dark.xml
│ │ ├── divider_field.xml
│ │ ├── floating_action_button_background.xml
│ │ ├── shortcut_request_coins.xml
│ │ ├── shortcut_scan_qr.xml
│ │ ├── shortcut_send_coins.xml
│ │ ├── stat_notify_peers.xml
│ │ ├── transactions_list_filter_received.xml
│ │ └── transactions_list_filter_sent.xml
│ ├── drawable-anydpi/
│ │ ├── ic_clear_grey600_24dp.xml
│ │ ├── ic_content_copy_white_24dp.xml
│ │ ├── ic_create_white_24dp.xml
│ │ ├── ic_delete_white_24dp.xml
│ │ ├── ic_filter_list_white_24dp.xml
│ │ ├── ic_local_offer_white_24dp.xml
│ │ ├── ic_open_in_browser_white_24dp.xml
│ │ ├── ic_photo_camera_shortcut_24dp.xml
│ │ ├── ic_photo_camera_white_24dp.xml
│ │ ├── ic_qrcode_white_24dp.xml
│ │ ├── ic_refresh_white_24dp.xml
│ │ ├── ic_search_white_24dp.xml
│ │ ├── ic_send_flipped_shortcut_24dp.xml
│ │ ├── ic_send_flipped_white_24dp.xml
│ │ ├── ic_send_shortcut_24dp.xml
│ │ ├── ic_send_white_24dp.xml
│ │ ├── ic_share_white_24dp.xml
│ │ ├── ic_sync_white_24dp.xml
│ │ ├── ic_warning_grey600_24dp.xml
│ │ ├── stat_notify_0_peers_24dp.xml
│ │ ├── stat_notify_1_peers_24dp.xml
│ │ ├── stat_notify_2_peers_24dp.xml
│ │ ├── stat_notify_3_peers_24dp.xml
│ │ ├── stat_notify_4_peers_24dp.xml
│ │ └── stat_notify_bluetooth_24dp.xml
│ ├── layout/
│ │ ├── address_book_content.xml
│ │ ├── address_book_row.xml
│ │ ├── backup_wallet_dialog.xml
│ │ ├── bitmap_dialog.xml
│ │ ├── block_list_fragment.xml
│ │ ├── block_row.xml
│ │ ├── block_row_transaction.xml
│ │ ├── dialog_title.xml
│ │ ├── edit_address_book_entry_dialog.xml
│ │ ├── encrypt_keys_dialog.xml
│ │ ├── exchange_rate_row.xml
│ │ ├── exchange_rates_content.xml
│ │ ├── exchange_rates_fragment.xml
│ │ ├── extended_public_key_dialog.xml
│ │ ├── maintenance_dialog.xml
│ │ ├── network_monitor_content.xml
│ │ ├── peer_list_fragment.xml
│ │ ├── peer_list_row.xml
│ │ ├── raise_fee_dialog.xml
│ │ ├── report_issue_dialog.xml
│ │ ├── request_coins_content.xml
│ │ ├── request_coins_form_include.xml
│ │ ├── request_coins_fragment.xml
│ │ ├── restore_wallet_dialog.xml
│ │ ├── row_separator.xml
│ │ ├── scan_activity.xml
│ │ ├── send_coins_address_row.xml
│ │ ├── send_coins_buttons_include.xml
│ │ ├── send_coins_content.xml
│ │ ├── send_coins_fragment.xml
│ │ ├── sending_addresses_fragment.xml
│ │ ├── spinner_item.xml
│ │ ├── sweep_wallet_content.xml
│ │ ├── sweep_wallet_fragment.xml
│ │ ├── transaction_row.xml
│ │ ├── transaction_row_card.xml
│ │ ├── transaction_row_warning.xml
│ │ ├── wallet_actions_fragment.xml
│ │ ├── wallet_activity_bottom_include.xml
│ │ ├── wallet_activity_onepane_horizontal.xml
│ │ ├── wallet_activity_onepane_vertical.xml
│ │ ├── wallet_activity_twopanes.xml
│ │ ├── wallet_address_dialog.xml
│ │ ├── wallet_address_fragment.xml
│ │ ├── wallet_addresses_fragment.xml
│ │ ├── wallet_balance_fragment.xml
│ │ ├── wallet_balance_widget_content.xml
│ │ ├── wallet_disclaimer_fragment.xml
│ │ └── wallet_transactions_fragment.xml
│ ├── layout-land/
│ │ └── request_coins_fragment.xml
│ ├── menu/
│ │ ├── address_book_activity_options.xml
│ │ ├── blocks_context.xml
│ │ ├── exchange_rates_context.xml
│ │ ├── exchange_rates_fragment_options.xml
│ │ ├── request_coins_activity_options.xml
│ │ ├── request_coins_fragment_options.xml
│ │ ├── send_coins_activity_options.xml
│ │ ├── send_coins_fragment_options.xml
│ │ ├── sending_addresses_context.xml
│ │ ├── sweep_wallet_fragment_options.xml
│ │ ├── wallet_addresses_context.xml
│ │ ├── wallet_balance_fragment_options.xml
│ │ ├── wallet_options.xml
│ │ ├── wallet_transactions_context.xml
│ │ └── wallet_transactions_fragment_options.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── drawables.xml
│ │ ├── ids.xml
│ │ ├── layouts.xml
│ │ ├── strings.xml
│ │ ├── strings_help.xml
│ │ ├── styles.xml
│ │ └── values.xml
│ ├── values-ar/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ca/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-cs/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-cy/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-da/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-de/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-el/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-eo/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-es/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-fi/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-fr/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-h400dp/
│ │ └── layouts.xml
│ ├── values-he/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-hr/
│ │ └── strings.xml
│ ├── values-hu/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-id/
│ │ └── strings.xml
│ ├── values-it/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-iw/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ja/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ko/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-land/
│ │ └── layouts.xml
│ ├── values-mk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-nb/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-night/
│ │ ├── colors.xml
│ │ └── styles.xml
│ ├── values-nl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-notnight-v29/
│ │ └── colors.xml
│ ├── values-pl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-pt-rBR/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-pt-rPT/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-ru/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sl/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sq/
│ │ └── strings.xml
│ ├── values-sv/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-sw/
│ │ └── strings.xml
│ ├── values-sw480dp/
│ │ └── dimens.xml
│ ├── values-sw600dp/
│ │ └── dimens.xml
│ ├── values-sw720dp/
│ │ └── dimens.xml
│ ├── values-tr/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-uk/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-v26/
│ │ └── drawables.xml
│ ├── values-vi/
│ │ └── strings.xml
│ ├── values-w1000dp/
│ │ └── dimens.xml
│ ├── values-w400dp/
│ │ └── dimens.xml
│ ├── values-w640dp/
│ │ └── layouts.xml
│ ├── values-w720dp/
│ │ └── layouts.xml
│ ├── values-zh/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ ├── values-zh-rTW/
│ │ ├── strings.xml
│ │ └── strings_help.xml
│ └── xml/
│ ├── file_provider.xml
│ ├── network_security_config.xml
│ ├── preference_about.xml
│ ├── preference_diagnostics.xml
│ ├── preference_headers.xml
│ ├── preference_settings.xml
│ ├── shortcuts.xml
│ └── wallet_balance_widget.xml
├── res-prod/
│ ├── values/
│ │ ├── colors.xml
│ │ └── values.xml
│ ├── values-night/
│ │ └── colors.xml
│ ├── values-notnight-v29/
│ │ └── colors.xml
│ └── xml/
│ └── shortcuts.xml
├── src/
│ └── de/
│ └── schildbach/
│ └── wallet/
│ ├── Configuration.java
│ ├── Constants.java
│ ├── Logging.java
│ ├── WalletApplication.java
│ ├── WalletBalanceWidgetProvider.java
│ ├── addressbook/
│ │ ├── AddressBookDao.java
│ │ ├── AddressBookDatabase.java
│ │ └── AddressBookEntry.java
│ ├── data/
│ │ ├── AbstractWalletLiveData.java
│ │ ├── BlockchainServiceLiveData.java
│ │ ├── ConfigFormatLiveData.java
│ │ ├── ConfigOwnNameLiveData.java
│ │ ├── DynamicFeeLiveData.java
│ │ ├── PaymentIntent.java
│ │ ├── SelectedExchangeRateLiveData.java
│ │ ├── ThrottelingLiveData.java
│ │ ├── TimeLiveData.java
│ │ ├── TransactionLiveData.java
│ │ ├── WalletBalanceLiveData.java
│ │ └── WalletLiveData.java
│ ├── exchangerate/
│ │ ├── CoinGecko.java
│ │ ├── ExchangeRateDao.java
│ │ ├── ExchangeRateEntry.java
│ │ ├── ExchangeRatesDatabase.java
│ │ └── ExchangeRatesRepository.java
│ ├── offline/
│ │ ├── AcceptBluetoothService.java
│ │ ├── AcceptBluetoothThread.java
│ │ └── DirectPaymentTask.java
│ ├── service/
│ │ ├── BlockchainService.java
│ │ ├── BlockchainState.java
│ │ ├── BootstrapReceiver.java
│ │ ├── NonWitnessPeerGroup.java
│ │ └── StartBlockchainService.java
│ ├── ui/
│ │ ├── AbstractWalletActivity.java
│ │ ├── AbstractWalletActivityViewModel.java
│ │ ├── AddressAndLabel.java
│ │ ├── AddressBookActivity.java
│ │ ├── AddressBookAdapter.java
│ │ ├── AddressBookViewModel.java
│ │ ├── AlertDialogsFragment.java
│ │ ├── AlertDialogsViewModel.java
│ │ ├── BitmapFragment.java
│ │ ├── CircularProgressView.java
│ │ ├── CurrencyAmountView.java
│ │ ├── CurrencyCalculatorLink.java
│ │ ├── CurrencySymbolDrawable.java
│ │ ├── CurrencyTextView.java
│ │ ├── DialogBuilder.java
│ │ ├── DialogEvent.java
│ │ ├── DividerItemDecoration.java
│ │ ├── EditAddressBookEntryFragment.java
│ │ ├── EncryptKeysDialogFragment.java
│ │ ├── Event.java
│ │ ├── ExchangeRatesActivity.java
│ │ ├── ExchangeRatesAdapter.java
│ │ ├── ExchangeRatesFragment.java
│ │ ├── ExchangeRatesViewModel.java
│ │ ├── HelpDialogFragment.java
│ │ ├── InputParser.java
│ │ ├── MaybeMaintenanceFragment.java
│ │ ├── MaybeMaintenanceViewModel.java
│ │ ├── ProgressDialogFragment.java
│ │ ├── ReportIssueDialogBuilder.java
│ │ ├── ReportIssueDialogFragment.java
│ │ ├── RequestCoinsActivity.java
│ │ ├── RequestCoinsActivityViewModel.java
│ │ ├── RequestCoinsFragment.java
│ │ ├── RequestCoinsViewModel.java
│ │ ├── SendCoinsQrActivity.java
│ │ ├── SendingAddressesFragment.java
│ │ ├── SendingAddressesViewModel.java
│ │ ├── SeparatorViewHolder.java
│ │ ├── ShowPasswordCheckListener.java
│ │ ├── StickToTopLinearLayoutManager.java
│ │ ├── TransactionsAdapter.java
│ │ ├── WalletActionsFragment.java
│ │ ├── WalletActivity.java
│ │ ├── WalletActivityViewModel.java
│ │ ├── WalletAddressDialogFragment.java
│ │ ├── WalletAddressFragment.java
│ │ ├── WalletAddressViewModel.java
│ │ ├── WalletAddressesFragment.java
│ │ ├── WalletAddressesViewModel.java
│ │ ├── WalletBalanceFragment.java
│ │ ├── WalletBalanceViewModel.java
│ │ ├── WalletDisclaimerFragment.java
│ │ ├── WalletDisclaimerViewModel.java
│ │ ├── WalletTransactionsFragment.java
│ │ ├── WalletTransactionsViewModel.java
│ │ ├── backup/
│ │ │ ├── BackupWalletActivity.java
│ │ │ ├── BackupWalletDialogFragment.java
│ │ │ ├── BackupWalletViewModel.java
│ │ │ ├── FileAdapter.java
│ │ │ ├── ImportDialogButtonEnablerListener.java
│ │ │ ├── RestoreWalletDialogFragment.java
│ │ │ ├── RestoreWalletFromExternalActivity.java
│ │ │ └── RestoreWalletViewModel.java
│ │ ├── monitor/
│ │ │ ├── BlockListAdapter.java
│ │ │ ├── BlockListFragment.java
│ │ │ ├── BlockListViewModel.java
│ │ │ ├── NetworkMonitorActivity.java
│ │ │ ├── NetworkMonitorViewModel.java
│ │ │ ├── PeerListAdapter.java
│ │ │ ├── PeerListFragment.java
│ │ │ └── PeerListViewModel.java
│ │ ├── preference/
│ │ │ ├── AboutFragment.java
│ │ │ ├── DiagnosticsFragment.java
│ │ │ ├── ExtendedPublicKeyFragment.java
│ │ │ ├── PreferenceActivity.java
│ │ │ ├── ResolveDnsTask.java
│ │ │ └── SettingsFragment.java
│ │ ├── scan/
│ │ │ ├── CameraManager.java
│ │ │ ├── ScanActivity.java
│ │ │ ├── ScanViewModel.java
│ │ │ └── ScannerView.java
│ │ └── send/
│ │ ├── DecodePrivateKeyTask.java
│ │ ├── DeriveKeyTask.java
│ │ ├── FeeCategory.java
│ │ ├── MaintenanceDialogFragment.java
│ │ ├── RaiseFeeDialogFragment.java
│ │ ├── RaiseFeeViewModel.java
│ │ ├── RequestPaymentRequestTask.java
│ │ ├── RequestWalletBalanceTask.java
│ │ ├── SendCoinsActivity.java
│ │ ├── SendCoinsActivityViewModel.java
│ │ ├── SendCoinsFragment.java
│ │ ├── SendCoinsOfflineTask.java
│ │ ├── SendCoinsViewModel.java
│ │ ├── SweepWalletActivity.java
│ │ ├── SweepWalletFragment.java
│ │ └── SweepWalletViewModel.java
│ └── util/
│ ├── Assets.java
│ ├── Base43.java
│ ├── Bluetooth.java
│ ├── CheatSheet.java
│ ├── CrashReporter.java
│ ├── Crypto.java
│ ├── FillGapsLinearLayout.java
│ ├── Formats.java
│ ├── GenericUtils.java
│ ├── Installer.java
│ ├── Iso8601Format.java
│ ├── MonetarySpannable.java
│ ├── Nfc.java
│ ├── OnFirstPreDraw.java
│ ├── Qr.java
│ ├── Toast.java
│ ├── ViewPagerTabs.java
│ ├── WalletUtils.java
│ ├── WholeStringBuilder.java
│ └── ZoomOutPageTransformer.java
└── test/
└── de/
└── schildbach/
└── wallet/
├── exchangerate/
│ ├── CoinGeckoTest.java
│ └── coingecko.json
└── util/
├── Base43Test.java
├── BluetoothTest.java
├── CryptoTest.java
├── FormatsTest.java
├── WalletUtilsTest.java
├── backup-protobuf-testnet
├── bitcoin-wallet-backup-testnet-3.50
└── bitcoin-wallet-backup-testnet-3.50-crlf
SYMBOL INDEX (1579 symbols across 164 files)
FILE: integration-android/src/de/schildbach/wallet/integration/android/BitcoinIntegration.java
class BitcoinIntegration (line 29) | public final class BitcoinIntegration {
method request (line 44) | public static void request(final Context context, final String address) {
method request (line 60) | public static void request(final Context context, final String address...
method request (line 74) | public static void request(final Context context, final byte[] payment...
method requestForResult (line 97) | public static void requestForResult(final Activity activity, final int...
method requestForResult (line 120) | public static void requestForResult(final Activity activity, final int...
method requestForResult (line 144) | public static void requestForResult(final Activity activity, final int...
method paymentRequestFromIntent (line 157) | public static byte[] paymentRequestFromIntent(final Intent intent) {
method paymentToResult (line 170) | public static void paymentToResult(final Intent result, final byte[] p...
method paymentFromResult (line 185) | public static byte[] paymentFromResult(final Intent result) {
method transactionHashToResult (line 198) | public static void transactionHashToResult(final Intent result, final ...
method transactionHashFromResult (line 213) | public static String transactionHashFromResult(final Intent result) {
method makeBitcoinUriIntent (line 220) | private static Intent makeBitcoinUriIntent(final String address, final...
method makePaymentRequestIntent (line 231) | private static Intent makePaymentRequestIntent(final byte[] paymentReq...
method start (line 239) | private static void start(final Context context, final Intent intent) {
method startForResult (line 247) | private static void startForResult(final Activity activity, final int ...
method redirectToDownload (line 255) | private static void redirectToDownload(final Context context) {
FILE: sample-integration-android/src/de/schildbach/wallet/integration/sample/SampleActivity.java
class SampleActivity (line 41) | public class SampleActivity extends Activity {
method onCreate (line 53) | @Override
method donationAddresses (line 68) | private String[] donationAddresses() {
method handleDonate (line 74) | private void handleDonate() {
method handleRequest (line 80) | private void handleRequest() {
method onActivityResult (line 112) | @Override
FILE: wallet/cpp/crypto_scrypt-nosse.c
function blkcpy (line 51) | static void
function blkxor (line 63) | static void
function salsa20_8 (line 79) | static void
function blockmix_salsa8 (line 125) | static void
function integerify (line 157) | static uint64_t
function smix (line 173) | static void
function crypto_scrypt (line 233) | int
FILE: wallet/cpp/scrypt_jni.c
function jbyteArray (line 26) | jbyteArray JNICALL scryptN(JNIEnv *env, jclass cls, jbyteArray passwd, j...
function log_params (line 94) | void log_params(JNIEnv *env, jbyteArray passwd, jbyteArray salt, jint N,...
function log_basic_info (line 101) | void log_basic_info() {
function jint (line 112) | jint JNI_OnLoad(JavaVM *vm, void *reserved) {
FILE: wallet/cpp/sha256.c
function be32enc_vect (line 41) | static void
function be32dec_vect (line 54) | static void
function SHA256_Transform (line 92) | static void
function SHA256_Pad (line 192) | static void
function SHA256_Init (line 214) | void
function SHA256_Update (line 233) | void
function SHA256_Final (line 279) | void
function HMAC_SHA256_Init (line 294) | void
function HMAC_SHA256_Update (line 330) | void
function HMAC_SHA256_Final (line 339) | void
function PBKDF2_SHA256 (line 362) | void
FILE: wallet/cpp/sha256.h
type SHA256_CTX (line 36) | typedef struct SHA256Context {
type HMAC_SHA256_CTX (line 42) | typedef struct HMAC_SHA256Context {
FILE: wallet/cpp/sysendian.h
function be32dec (line 47) | static inline uint32_t
function be32enc (line 56) | static inline void
function be64dec (line 67) | static inline uint64_t
function be64enc (line 78) | static inline void
function le32dec (line 93) | static inline uint32_t
function le32enc (line 102) | static inline void
function le64dec (line 113) | static inline uint64_t
function le64enc (line 124) | static inline void
FILE: wallet/src/de/schildbach/wallet/Configuration.java
class Configuration (line 42) | public class Configuration {
method Configuration (line 79) | public Configuration(final SharedPreferences prefs, final Resources re...
method getBtcPrecision (line 86) | private int getBtcPrecision() {
method getBtcShift (line 94) | public int getBtcShift() {
method getBtcBase (line 102) | public Coin getBtcBase() {
method getFormat (line 114) | public MonetaryFormat getFormat() {
method getMaxPrecisionFormat (line 127) | public MonetaryFormat getMaxPrecisionFormat() {
method getOwnName (line 137) | public String getOwnName() {
method getSendCoinsAutoclose (line 141) | public boolean getSendCoinsAutoclose() {
method getSyncMode (line 145) | public SyncMode getSyncMode() {
type SyncMode (line 149) | public enum SyncMode {
method getTrustedPeers (line 154) | public Set<HostAndPort> getTrustedPeers() {
method getTrustedPeersOnly (line 168) | public boolean getTrustedPeersOnly() {
method isTrustedPeersOnly (line 172) | public boolean isTrustedPeersOnly() {
method getBlockExplorer (line 176) | public String getBlockExplorer() {
method remindBalance (line 181) | public boolean remindBalance() {
method setRemindBalance (line 185) | public void setRemindBalance(final boolean remindBalance) {
method remindBackup (line 189) | public boolean remindBackup() {
method getLastBackupTime (line 193) | public long getLastBackupTime() {
method armBackupReminder (line 197) | public void armBackupReminder() {
method disarmBackupReminder (line 201) | public void disarmBackupReminder() {
method getLastRestoreTime (line 206) | public long getLastRestoreTime() {
method updateLastRestoreTime (line 210) | public void updateLastRestoreTime() {
method getLastEncryptKeysTime (line 214) | public long getLastEncryptKeysTime() {
method updateLastEncryptKeysTime (line 218) | public void updateLastEncryptKeysTime() {
method getLastBlockchainResetTime (line 222) | public long getLastBlockchainResetTime() {
method updateLastBlockchainResetTime (line 226) | public void updateLastBlockchainResetTime() {
method getDisclaimerEnabled (line 230) | public boolean getDisclaimerEnabled() {
method defaultCurrencyCode (line 234) | private String defaultCurrencyCode() {
method getExchangeCurrencyCode (line 242) | public String getExchangeCurrencyCode() {
method setExchangeCurrencyCode (line 246) | public void setExchangeCurrencyCode(final String exchangeCurrencyCode) {
method versionCodeCrossed (line 250) | public boolean versionCodeCrossed(final int currentVersionCode, final ...
method updateLastVersionCode (line 258) | public void updateLastVersionCode(final int currentVersionCode) {
method hasBeenUsed (line 267) | public boolean hasBeenUsed() {
method getLastUsedAgo (line 271) | public long getLastUsedAgo() {
method touchLastUsed (line 277) | public void touchLastUsed() {
method getBestChainHeightEver (line 285) | public int getBestChainHeightEver() {
method maybeIncrementBestChainHeightEver (line 289) | public void maybeIncrementBestChainHeightEver(final int bestChainHeigh...
method resetBestChainHeightEver (line 294) | public void resetBestChainHeightEver() {
method getLastExchangeDirection (line 298) | public boolean getLastExchangeDirection() {
method setLastExchangeDirection (line 302) | public void setLastExchangeDirection(final boolean exchangeDirection) {
method changeLogVersionCodeCrossed (line 306) | public boolean changeLogVersionCodeCrossed(final int currentVersionCod...
method getLastBluetoothAddress (line 318) | public String getLastBluetoothAddress() {
method updateLastBluetoothAddress (line 322) | public void updateLastBluetoothAddress(final String bluetoothAddress) {
method getBluetoothAddress (line 327) | public String getBluetoothAddress() {
method setBluetoothAddress (line 331) | public void setBluetoothAddress(final String bluetoothAddress) {
method registerOnSharedPreferenceChangeListener (line 335) | public void registerOnSharedPreferenceChangeListener(final OnSharedPre...
method unregisterOnSharedPreferenceChangeListener (line 339) | public void unregisterOnSharedPreferenceChangeListener(final OnSharedP...
FILE: wallet/src/de/schildbach/wallet/Constants.java
class Constants (line 44) | public final class Constants {
class Files (line 74) | public final static class Files {
method log (line 210) | @Override
FILE: wallet/src/de/schildbach/wallet/Logging.java
class Logging (line 35) | public class Logging {
method init (line 42) | public static synchronized void init(final File filesDir) {
FILE: wallet/src/de/schildbach/wallet/WalletApplication.java
class WalletApplication (line 75) | public class WalletApplication extends Application {
method onCreate (line 91) | @Override
method getConfiguration (line 134) | public synchronized Configuration getConfiguration() {
method getWallet (line 140) | @WorkerThread
method getWalletAsync (line 159) | @AnyThread
type OnWalletLoadedListener (line 236) | public interface OnWalletLoadedListener {
method onWalletLoaded (line 237) | void onWalletLoaded(Wallet wallet);
method autosaveWalletNow (line 240) | public void autosaveWalletNow() {
method replaceWallet (line 256) | public void replaceWallet(final Wallet newWallet) {
method cleanupFiles (line 274) | private void cleanupFiles() {
method initStrictMode (line 286) | public static void initStrictMode() {
method initNotificationManager (line 291) | private void initNotificationManager() {
method packageInfo (line 318) | public synchronized PackageInfo packageInfo() {
method applicationPackageFlavor (line 330) | public final String applicationPackageFlavor() {
method httpUserAgent (line 340) | public static String httpUserAgent(final String versionName) {
method httpUserAgent (line 346) | public String httpUserAgent() {
method maxConnectedPeers (line 350) | public int maxConnectedPeers() {
method scryptIterationsTarget (line 354) | public int scryptIterationsTarget() {
method fullSyncCapable (line 359) | public boolean fullSyncCapable() {
method versionLine (line 363) | public static String versionLine(final PackageInfo packageInfo) {
method apkHash (line 368) | public final HashCode apkHash() throws IOException {
FILE: wallet/src/de/schildbach/wallet/WalletBalanceWidgetProvider.java
class WalletBalanceWidgetProvider (line 58) | public class WalletBalanceWidgetProvider extends AppWidgetProvider {
method onUpdate (line 63) | @Override
method onAppWidgetOptionsChanged (line 79) | @Override
method updateWidgets (line 99) | public static void updateWidgets(final Context context, final Coin bal...
method updateWidgets (line 115) | private static void updateWidgets(final Context context, final AppWidg...
method updateWidget (line 123) | private static void updateWidget(final Context context, final AppWidge...
method getAppWidgetOptions (line 181) | private static Bundle getAppWidgetOptions(final AppWidgetManager appWi...
FILE: wallet/src/de/schildbach/wallet/addressbook/AddressBookDao.java
type AddressBookDao (line 32) | @Dao
method insertOrUpdate (line 34) | @Insert(onConflict = OnConflictStrategy.REPLACE)
method delete (line 37) | @Query("DELETE FROM address_book WHERE address = :address")
method resolveLabel (line 40) | @Query("SELECT label FROM address_book WHERE address = :address")
method get (line 43) | @Query("SELECT * FROM address_book WHERE address LIKE '%' || :constrai...
method getAll (line 46) | @Query("SELECT * FROM address_book ORDER BY label COLLATE LOCALIZED ASC")
method getAllExcept (line 49) | @Query("SELECT * FROM address_book WHERE address NOT IN (:except) ORDE...
FILE: wallet/src/de/schildbach/wallet/addressbook/AddressBookDatabase.java
class AddressBookDatabase (line 30) | @Database(entities = { AddressBookEntry.class }, version = 2, exportSche...
method addressBookDao (line 32) | public abstract AddressBookDao addressBookDao();
method getDatabase (line 37) | public static AddressBookDatabase getDatabase(final Context context) {
method migrate (line 50) | @Override
FILE: wallet/src/de/schildbach/wallet/addressbook/AddressBookEntry.java
class AddressBookEntry (line 32) | @Entity(tableName = AddressBookEntry.TABLE_NAME)
method AddressBookEntry (line 44) | public AddressBookEntry(final String address, final String label) {
method getAddress (line 49) | public String getAddress() {
method getLabel (line 53) | public String getLabel() {
method asMap (line 57) | public static Map<String, AddressBookEntry> asMap(final List<AddressBo...
FILE: wallet/src/de/schildbach/wallet/data/AbstractWalletLiveData.java
class AbstractWalletLiveData (line 30) | public abstract class AbstractWalletLiveData<T> extends ThrottelingLiveD...
method AbstractWalletLiveData (line 35) | public AbstractWalletLiveData(final WalletApplication application) {
method AbstractWalletLiveData (line 40) | public AbstractWalletLiveData(final WalletApplication application, fin...
method onActive (line 45) | @Override
method onInactive (line 51) | @Override
method loadWallet (line 59) | private void loadWallet() {
method getWallet (line 63) | protected Wallet getWallet() {
method onChanged (line 72) | @Override
method onWalletActive (line 79) | protected abstract void onWalletActive(Wallet wallet);
method onWalletInactive (line 81) | protected void onWalletInactive(final Wallet wallet) {
FILE: wallet/src/de/schildbach/wallet/data/BlockchainServiceLiveData.java
class BlockchainServiceLiveData (line 31) | public class BlockchainServiceLiveData extends LiveData<BlockchainServic...
method BlockchainServiceLiveData (line 34) | public BlockchainServiceLiveData(final Context context) {
method onActive (line 38) | @Override
method onInactive (line 43) | @Override
method onServiceConnected (line 48) | @Override
method onServiceDisconnected (line 53) | @Override
FILE: wallet/src/de/schildbach/wallet/data/ConfigFormatLiveData.java
class ConfigFormatLiveData (line 29) | public class ConfigFormatLiveData extends LiveData<MonetaryFormat>
method ConfigFormatLiveData (line 33) | public ConfigFormatLiveData(final WalletApplication application) {
method onActive (line 37) | @Override
method onInactive (line 43) | @Override
method onSharedPreferenceChanged (line 48) | @Override
FILE: wallet/src/de/schildbach/wallet/data/ConfigOwnNameLiveData.java
class ConfigOwnNameLiveData (line 28) | public class ConfigOwnNameLiveData extends LiveData<String>
method ConfigOwnNameLiveData (line 32) | public ConfigOwnNameLiveData(final WalletApplication application) {
method onActive (line 36) | @Override
method onInactive (line 42) | @Override
method onSharedPreferenceChanged (line 47) | @Override
FILE: wallet/src/de/schildbach/wallet/data/DynamicFeeLiveData.java
class DynamicFeeLiveData (line 59) | public class DynamicFeeLiveData extends LiveData<Map<FeeCategory, Coin>> {
method DynamicFeeLiveData (line 68) | public DynamicFeeLiveData(final WalletApplication application) {
method onActive (line 79) | @Override
method loadInBackground (line 87) | private Map<FeeCategory, Coin> loadInBackground() {
method parseFees (line 131) | private static Map<FeeCategory, Coin> parseFees(final InputStream is) ...
method fetchDynamicFees (line 160) | private static void fetchDynamicFees(final HttpUrl url, final File tem...
FILE: wallet/src/de/schildbach/wallet/data/PaymentIntent.java
class PaymentIntent (line 49) | public final class PaymentIntent implements Parcelable {
type Standard (line 50) | public enum Standard {
class Output (line 54) | public final static class Output implements Parcelable {
method Output (line 58) | public Output(final Coin amount, final Script script) {
method valueOf (line 63) | public static Output valueOf(final PaymentProtocol.Output output)
method hasAmount (line 74) | public boolean hasAmount() {
method toString (line 78) | @Override
method describeContents (line 100) | @Override
method writeToParcel (line 105) | @Override
method createFromParcel (line 115) | @Override
method newArray (line 120) | @Override
method Output (line 126) | private Output(final Parcel in) {
method PaymentIntent (line 165) | public PaymentIntent(@Nullable final Standard standard, @Nullable fina...
method PaymentIntent (line 180) | private PaymentIntent(final Address address, @Nullable final String ad...
method blank (line 184) | public static PaymentIntent blank() {
method fromAddress (line 188) | public static PaymentIntent fromAddress(final Address address, @Nullab...
method fromAddress (line 192) | public static PaymentIntent fromAddress(final String address, @Nullabl...
method from (line 197) | public static PaymentIntent from(final String address, @Nullable final...
method fromBitcoinUri (line 204) | public static PaymentIntent fromBitcoinUri(final BitcoinURI bitcoinUri) {
method base64UrlDecode (line 218) | private static byte[] base64UrlDecode(final String encoded) {
method mergeWithEditedValues (line 227) | public PaymentIntent mergeWithEditedValues(@Nullable final Coin edited...
method toSendRequest (line 252) | public SendRequest toSendRequest() {
method buildSimplePayTo (line 259) | private static Output[] buildSimplePayTo(final Coin amount, final Addr...
method hasPayee (line 263) | public boolean hasPayee() {
method hasOutputs (line 267) | public boolean hasOutputs() {
method hasAddress (line 271) | public boolean hasAddress() {
method getAddress (line 280) | public Address getAddress() {
method mayEditAddress (line 288) | public boolean mayEditAddress() {
method hasAmount (line 292) | public boolean hasAmount() {
method getAmount (line 301) | public Coin getAmount() {
method mayEditAmount (line 315) | public boolean mayEditAmount() {
method hasPaymentUrl (line 319) | public boolean hasPaymentUrl() {
method isSupportedPaymentUrl (line 323) | public boolean isSupportedPaymentUrl() {
method isHttpPaymentUrl (line 327) | public boolean isHttpPaymentUrl() {
method isBluetoothPaymentUrl (line 332) | public boolean isBluetoothPaymentUrl() {
method hasPaymentRequestUrl (line 336) | public boolean hasPaymentRequestUrl() {
method isSupportedPaymentRequestUrl (line 340) | public boolean isSupportedPaymentRequestUrl() {
method isHttpPaymentRequestUrl (line 344) | public boolean isHttpPaymentRequestUrl() {
method isBluetoothPaymentRequestUrl (line 349) | public boolean isBluetoothPaymentRequestUrl() {
method isExtendedBy (line 363) | public boolean isExtendedBy(final PaymentIntent other) {
method equalsAmount (line 373) | public boolean equalsAmount(final PaymentIntent other) {
method equalsAddress (line 382) | public boolean equalsAddress(final PaymentIntent other) {
method toString (line 391) | @Override
method describeContents (line 425) | @Override
method writeToParcel (line 430) | @Override
method createFromParcel (line 466) | @Override
method newArray (line 471) | @Override
method PaymentIntent (line 477) | private PaymentIntent(final Parcel in) {
FILE: wallet/src/de/schildbach/wallet/data/SelectedExchangeRateLiveData.java
class SelectedExchangeRateLiveData (line 37) | public class SelectedExchangeRateLiveData extends LiveData<ExchangeRateE...
method onInvalidated (line 44) | @Override
method SelectedExchangeRateLiveData (line 50) | public SelectedExchangeRateLiveData(final WalletApplication applicatio...
method onActive (line 58) | @Override
method onInactive (line 65) | @Override
method onSharedPreferenceChanged (line 71) | @Override
method onChange (line 77) | private void onChange() {
FILE: wallet/src/de/schildbach/wallet/data/ThrottelingLiveData.java
class ThrottelingLiveData (line 27) | public abstract class ThrottelingLiveData<T> extends LiveData<T> {
method ThrottelingLiveData (line 33) | public ThrottelingLiveData() {
method ThrottelingLiveData (line 37) | public ThrottelingLiveData(final long throttleMs) {
method onInactive (line 41) | @Override
method triggerLoad (line 47) | @MainThread
method load (line 61) | @MainThread
FILE: wallet/src/de/schildbach/wallet/data/TimeLiveData.java
class TimeLiveData (line 32) | public class TimeLiveData extends LiveData<Date> {
method TimeLiveData (line 35) | public TimeLiveData(final WalletApplication application) {
method onActive (line 39) | @Override
method onInactive (line 45) | @Override
method onReceive (line 51) | @Override
FILE: wallet/src/de/schildbach/wallet/data/TransactionLiveData.java
class TransactionLiveData (line 32) | public class TransactionLiveData extends LiveData<Transaction> implement...
method TransactionLiveData (line 37) | public TransactionLiveData(final WalletApplication application) {
method onActive (line 41) | @Override
method onInactive (line 46) | @Override
method setValue (line 51) | @Override
method maybeAddEventListener (line 59) | private void maybeAddEventListener(final Transaction transaction) {
method maybeRemoveEventListener (line 66) | private void maybeRemoveEventListener(final Transaction transaction) {
method onConfidenceChanged (line 73) | @Override
FILE: wallet/src/de/schildbach/wallet/data/WalletBalanceLiveData.java
class WalletBalanceLiveData (line 39) | public final class WalletBalanceLiveData extends AbstractWalletLiveData<...
method WalletBalanceLiveData (line 44) | public WalletBalanceLiveData(final WalletApplication application, fina...
method WalletBalanceLiveData (line 50) | public WalletBalanceLiveData(final WalletApplication application) {
method onWalletActive (line 54) | @Override
method onWalletInactive (line 61) | @Override
method addWalletListener (line 67) | private void addWalletListener(final Wallet wallet) {
method removeWalletListener (line 74) | private void removeWalletListener(final Wallet wallet) {
method load (line 81) | @Override
class WalletListener (line 92) | private class WalletListener implements WalletCoinsReceivedEventListen...
method onCoinsReceived (line 94) | @Override
method onCoinsSent (line 100) | @Override
method onReorganize (line 106) | @Override
method onWalletChanged (line 111) | @Override
method onSharedPreferenceChanged (line 117) | @Override
FILE: wallet/src/de/schildbach/wallet/data/WalletLiveData.java
class WalletLiveData (line 26) | public class WalletLiveData extends AbstractWalletLiveData<Wallet> {
method WalletLiveData (line 27) | public WalletLiveData(final WalletApplication application) {
method onWalletActive (line 31) | @Override
FILE: wallet/src/de/schildbach/wallet/exchangerate/CoinGecko.java
class CoinGecko (line 44) | public final class CoinGecko {
method CoinGecko (line 53) | public CoinGecko(final Moshi moshi) {
method mediaType (line 57) | public MediaType mediaType() {
method url (line 61) | public HttpUrl url() {
method parse (line 65) | public List<ExchangeRateEntry> parse(final BufferedSource jsonSource, ...
type Type (line 94) | private enum Type {
class Response (line 103) | private static class Response {
class ExchangeRateJson (line 107) | private static class ExchangeRateJson {
FILE: wallet/src/de/schildbach/wallet/exchangerate/ExchangeRateDao.java
type ExchangeRateDao (line 31) | @Dao
method insertOrUpdate (line 33) | @Insert(onConflict = OnConflictStrategy.REPLACE)
method findAll (line 36) | @Query("SELECT * FROM exchange_rates ORDER BY currency_code COLLATE LO...
method findByConstraint (line 39) | @Query("SELECT * FROM exchange_rates WHERE currency_code LIKE '%' || :...
method findByCurrencyCode (line 43) | @Query("SELECT * FROM exchange_rates WHERE currency_code = :currencyCo...
FILE: wallet/src/de/schildbach/wallet/exchangerate/ExchangeRateEntry.java
class ExchangeRateEntry (line 36) | @Entity(tableName = ExchangeRateEntry.TABLE_NAME, indices = { @Index(val...
method ExchangeRateEntry (line 64) | public ExchangeRateEntry(final long id, @NonNull final String source, ...
method ExchangeRateEntry (line 74) | public ExchangeRateEntry(final String source, final ExchangeRate excha...
method getId (line 82) | public long getId() {
method getSource (line 86) | @NonNull
method getCurrencyCode (line 91) | @NonNull
method getRateTimeStamp (line 96) | @NonNull
method getRateCoin (line 101) | public long getRateCoin() {
method getRateFiat (line 105) | public long getRateFiat() {
method coin (line 109) | @NonNull
method fiat (line 114) | @NonNull
method exchangeRate (line 119) | @NonNull
method toString (line 124) | @Override
class DateConverters (line 136) | public static final class DateConverters {
method millisToDate (line 137) | @TypeConverter
method dateToMillis (line 142) | @TypeConverter
FILE: wallet/src/de/schildbach/wallet/exchangerate/ExchangeRatesDatabase.java
class ExchangeRatesDatabase (line 28) | @Database(entities = { ExchangeRateEntry.class }, version = 1, exportSch...
method getDatabase (line 33) | public static ExchangeRatesDatabase getDatabase(final Context context) {
method exchangeRateDao (line 46) | public abstract ExchangeRateDao exchangeRateDao();
FILE: wallet/src/de/schildbach/wallet/exchangerate/ExchangeRatesRepository.java
class ExchangeRatesRepository (line 46) | public class ExchangeRatesRepository {
method get (line 59) | public synchronized static ExchangeRatesRepository get(final WalletApp...
method ExchangeRatesRepository (line 67) | public ExchangeRatesRepository(final WalletApplication application) {
method exchangeRateDao (line 76) | public ExchangeRateDao exchangeRateDao() {
method exchangeRateInvalidationTracker (line 81) | public InvalidationTracker exchangeRateInvalidationTracker() {
method requestDogeBtcConversion (line 85) | private void requestDogeBtcConversion(DogeConversionCallback cb) {
class DogeBtcConversionResponse (line 119) | private static class DogeBtcConversionResponse {
class DogeBtcConversionEntry (line 123) | private static class DogeBtcConversionEntry {
type DogeConversionCallback (line 127) | private interface DogeConversionCallback {
method done (line 128) | void done(double conv);
method maybeRequestExchangeRates (line 131) | private void maybeRequestExchangeRates() {
FILE: wallet/src/de/schildbach/wallet/offline/AcceptBluetoothService.java
class AcceptBluetoothService (line 52) | public final class AcceptBluetoothService extends LifecycleService {
method onBind (line 67) | @Override
method onStartCommand (line 73) | @Override
method onCreate (line 83) | @Override
method handleTx (line 135) | private boolean handleTx(final Transaction tx) {
method onDestroy (line 156) | @Override
method onReceive (line 175) | @Override
FILE: wallet/src/de/schildbach/wallet/offline/AcceptBluetoothThread.java
class AcceptBluetoothThread (line 42) | public abstract class AcceptBluetoothThread extends Thread {
method AcceptBluetoothThread (line 48) | private AcceptBluetoothThread(final BluetoothServerSocket listeningSoc...
class ClassicBluetoothThread (line 52) | public static abstract class ClassicBluetoothThread extends AcceptBlue...
method ClassicBluetoothThread (line 53) | public ClassicBluetoothThread(final BluetoothAdapter adapter) throws...
method run (line 58) | @Override
class PaymentProtocolThread (line 97) | public static abstract class PaymentProtocolThread extends AcceptBluet...
method PaymentProtocolThread (line 98) | public PaymentProtocolThread(final BluetoothAdapter adapter) throws ...
method run (line 103) | @Override
method stopAccepting (line 139) | public void stopAccepting() {
method handleTx (line 149) | protected abstract boolean handleTx(Transaction tx);
FILE: wallet/src/de/schildbach/wallet/offline/DirectPaymentTask.java
class DirectPaymentTask (line 51) | public abstract class DirectPaymentTask {
type ResultCallback (line 58) | public interface ResultCallback {
method onResult (line 59) | void onResult(boolean ack);
method onFail (line 61) | void onFail(int messageResId, Object... messageArgs);
method DirectPaymentTask (line 64) | public DirectPaymentTask(final Handler backgroundHandler, final Result...
class HttpPaymentTask (line 70) | public final static class HttpPaymentTask extends DirectPaymentTask {
method HttpPaymentTask (line 75) | public HttpPaymentTask(final Handler backgroundHandler, final Result...
method send (line 83) | @Override
class BluetoothPaymentTask (line 144) | public final static class BluetoothPaymentTask extends DirectPaymentTa...
method BluetoothPaymentTask (line 148) | public BluetoothPaymentTask(final Handler backgroundHandler, final R...
method send (line 156) | @Override
method send (line 192) | public abstract void send(Payment payment);
method onResult (line 194) | protected void onResult(final boolean ack) {
method onFail (line 198) | protected void onFail(final int messageResId, final Object... messageA...
FILE: wallet/src/de/schildbach/wallet/service/BlockchainService.java
class BlockchainService (line 114) | public class BlockchainService extends LifecycleService {
method start (line 156) | public static void start(final Context context, final boolean cancelCo...
method resetBlockchain (line 164) | public static void resetBlockchain(final Context context) {
class NewTransactionLiveData (line 170) | private static class NewTransactionLiveData extends LiveData<Transacti...
method NewTransactionLiveData (line 173) | public NewTransactionLiveData(final Wallet wallet) {
method onActive (line 177) | @Override
method onInactive (line 183) | @Override
class WalletListener (line 191) | private class WalletListener implements WalletCoinsReceivedEventList...
method onCoinsReceived (line 192) | @Override
method onCoinsSent (line 198) | @Override
method notifyCoinsReceived (line 206) | private void notifyCoinsReceived(@Nullable final Address address, fina...
class PeerConnectivityListener (line 268) | private final class PeerConnectivityListener
method stop (line 272) | public void stop() {
method onPeerConnected (line 276) | @Override
method onPeerDisconnected (line 282) | @Override
method changed (line 287) | private void changed(final int numPeers) {
class BlockchainDownloadListener (line 300) | private class BlockchainDownloadListener extends AbstractPeerDataEvent...
method onChainDownloadStarted (line 305) | @Override
method onBlocksDownloaded (line 315) | @Override
method run (line 328) | @Override
class ImpedimentsLiveData (line 343) | private static class ImpedimentsLiveData extends LiveData<Set<Impedime...
method ImpedimentsLiveData (line 348) | public ImpedimentsLiveData(final WalletApplication application) {
method onActive (line 354) | @Override
method onInactive (line 366) | @Override
method onReceive (line 372) | @Override
method handleIntent (line 378) | private void handleIntent(final Intent intent) {
method postDelayedStopSelf (line 432) | private void postDelayedStopSelf(final long ms) {
method onReceive (line 438) | @Override
class LocalBinder (line 444) | public class LocalBinder extends Binder {
method getService (line 445) | public BlockchainService getService() {
method onBind (line 452) | @Override
method onUnbind (line 460) | @Override
method onCreate (line 467) | @Override
method observeLiveDatasThatAreDependentOnWalletAndBlockchain (line 578) | private void observeLiveDatasThatAreDependentOnWalletAndBlockchain() {
method onStartCommand (line 687) | @Override
method onDestroy (line 716) | @Override
method onTrimMemory (line 767) | @Override
method broadcastTransaction (line 778) | @Nullable
method getBlockchainState (line 789) | @Nullable
method getConnectedPeers (line 802) | @Nullable
method dropAllPeers (line 810) | public void dropAllPeers() {
method getRecentBlocks (line 816) | @Nullable
method startForeground (line 837) | private void startForeground(final int numPeers) {
method startForegroundProgress (line 849) | private void startForegroundProgress(final int blocksToDownload, final...
method broadcastPeerState (line 854) | @MainThread
method broadcastBlockchainState (line 859) | @MainThread
FILE: wallet/src/de/schildbach/wallet/service/BlockchainState.java
class BlockchainState (line 27) | public class BlockchainState {
type Impediment (line 28) | public enum Impediment {
method BlockchainState (line 37) | public BlockchainState(final Date bestChainDate, final int bestChainHe...
FILE: wallet/src/de/schildbach/wallet/service/BootstrapReceiver.java
class BootstrapReceiver (line 44) | public class BootstrapReceiver extends BroadcastReceiver {
method onReceive (line 52) | @Override
method onAsyncReceive (line 63) | @WorkerThread
method maybeUpgradeWallet (line 92) | @WorkerThread
method maybeShowInactivityNotification (line 108) | @WorkerThread
method dismissNotification (line 169) | @WorkerThread
method dismissNotificationForever (line 176) | @WorkerThread
method donate (line 184) | @WorkerThread
FILE: wallet/src/de/schildbach/wallet/service/NonWitnessPeerGroup.java
class NonWitnessPeerGroup (line 19) | public class NonWitnessPeerGroup extends PeerGroup {
method NonWitnessPeerGroup (line 20) | public NonWitnessPeerGroup(NetworkParameters params, @Nullable Abstrac...
method selectDownloadPeer (line 28) | @Override
FILE: wallet/src/de/schildbach/wallet/service/StartBlockchainService.java
class StartBlockchainService (line 40) | public class StartBlockchainService extends JobService {
method schedule (line 45) | public static void schedule(final WalletApplication application, final...
method onCreate (line 78) | @Override
method onStartJob (line 84) | @Override
method onStopJob (line 100) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/AbstractWalletActivity.java
class AbstractWalletActivity (line 38) | public abstract class AbstractWalletActivity extends FragmentActivity {
method onCreate (line 43) | @Override
method getWalletApplication (line 50) | public WalletApplication getWalletApplication() {
method onOptionsItemSelected (line 54) | @Override
method setShowWhenLocked (line 63) | @SuppressWarnings("deprecation")
method startExternalDocument (line 74) | public void startExternalDocument(final Uri url) {
FILE: wallet/src/de/schildbach/wallet/ui/AbstractWalletActivityViewModel.java
class AbstractWalletActivityViewModel (line 40) | public class AbstractWalletActivityViewModel extends AndroidViewModel {
method AbstractWalletActivityViewModel (line 47) | public AbstractWalletActivityViewModel(final Application application) {
method broadcastTransaction (line 54) | public ListenableFuture<Transaction> broadcastTransaction(final Transa...
FILE: wallet/src/de/schildbach/wallet/ui/AddressAndLabel.java
class AddressAndLabel (line 32) | public class AddressAndLabel implements Parcelable {
method AddressAndLabel (line 36) | public AddressAndLabel(final Address address, @Nullable final String l...
method AddressAndLabel (line 41) | public AddressAndLabel(final NetworkParameters addressParams, final St...
method equals (line 46) | @Override
method hashCode (line 56) | @Override
method toString (line 61) | @Override
method describeContents (line 75) | @Override
method writeToParcel (line 80) | @Override
method createFromParcel (line 87) | @Override
method newArray (line 92) | @Override
method AddressAndLabel (line 98) | private AddressAndLabel(final Parcel in) {
FILE: wallet/src/de/schildbach/wallet/ui/AddressBookActivity.java
class AddressBookActivity (line 47) | public final class AddressBookActivity extends AbstractWalletActivity {
method start (line 48) | public static void start(final Context context) {
method onCreate (line 62) | @Override
method onActivityResult (line 130) | @Override
method onCreateOptionsMenu (line 168) | @Override
method onOptionsItemSelected (line 177) | @Override
class PagerAdapter (line 187) | private class PagerAdapter extends FragmentStateAdapter {
method PagerAdapter (line 188) | public PagerAdapter() {
method getItemCount (line 192) | @Override
method createFragment (line 197) | @NonNull
FILE: wallet/src/de/schildbach/wallet/ui/AddressBookAdapter.java
class AddressBookAdapter (line 58) | public class AddressBookAdapter extends ListAdapter<AddressBookAdapter.L...
method buildListItems (line 59) | public static List<ListItem> buildListItems(final Context context,
method addListItems (line 72) | private static void addListItems(final List<ListItem> items,
method buildListItems (line 117) | public static List<ListItem> buildListItems(final Context context, fin...
class ListItem (line 130) | public static abstract class ListItem {
method ListItem (line 134) | private ListItem(final long id) {
class AddressItem (line 138) | public static class AddressItem extends ListItem {
method AddressItem (line 151) | public AddressItem(final Address address, @ColorInt final int addr...
method id (line 162) | private static long id(final Address address) {
class SeparatorItem (line 167) | public static class SeparatorItem extends ListItem {
method SeparatorItem (line 170) | public SeparatorItem(final CharSequence label) {
method id (line 175) | private static long id(final CharSequence label) {
type OnClickListener (line 183) | public interface OnClickListener {
method onAddressClick (line 184) | void onAddressClick(View view, Address address, @Nullable String lab...
type ContextMenuCallback (line 187) | public interface ContextMenuCallback {
method onInflateAddressContextMenu (line 188) | void onInflateAddressContextMenu(MenuInflater inflater, Menu menu);
method onClickAddressContextMenuItem (line 190) | boolean onClickAddressContextMenuItem(MenuItem item, Address address...
method AddressBookAdapter (line 209) | public AddressBookAdapter(final Context context, @Nullable final OnCli...
method setSelectedAddress (line 251) | @MainThread
method positionOf (line 262) | @MainThread
method getItemViewType (line 275) | @Override
method getItemId (line 286) | @Override
method onCreateViewHolder (line 292) | @Override
method onBindViewHolder (line 302) | @Override
class AddressViewHolder (line 341) | public static class AddressViewHolder extends RecyclerView.ViewHolder {
method AddressViewHolder (line 347) | private AddressViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/AddressBookViewModel.java
class AddressBookViewModel (line 27) | public class AddressBookViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/AlertDialogsFragment.java
class AlertDialogsFragment (line 67) | public class AlertDialogsFragment extends Fragment {
method add (line 70) | public static void add(final FragmentManager fm) {
method onAttach (line 87) | @Override
method onCreate (line 96) | @Override
method process (line 141) | private void process() {
method createTimeskewAlertDialog (line 273) | private Dialog createTimeskewAlertDialog(final long diffMinutes) {
method createVersionAlertDialog (line 291) | private Dialog createVersionAlertDialog() {
method createInsecureBluetoothAlertDialog (line 322) | private Dialog createInsecureBluetoothAlertDialog(final String minSecu...
method createLowStorageAlertDialog (line 341) | private Dialog createLowStorageAlertDialog() {
method createSettingsFailedDialog (line 360) | private Dialog createSettingsFailedDialog(final String exceptionMessag...
FILE: wallet/src/de/schildbach/wallet/ui/AlertDialogsViewModel.java
class AlertDialogsViewModel (line 26) | public class AlertDialogsViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/BitmapFragment.java
class BitmapFragment (line 37) | public class BitmapFragment extends DialogFragment {
method show (line 41) | public static void show(final FragmentManager fm, final Bitmap bitmap) {
method instance (line 45) | private static BitmapFragment instance(final Bitmap bitmap) {
method onAttach (line 59) | @Override
method onCreate (line 65) | @Override
method onCreateDialog (line 71) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/CircularProgressView.java
class CircularProgressView (line 34) | public class CircularProgressView extends View {
method CircularProgressView (line 45) | public CircularProgressView(final Context context, final AttributeSet ...
method onDraw (line 60) | @Override
method setColors (line 68) | public void setColors(final int fillColor, final int strokeColor) {
method setProgress (line 74) | public void setProgress(final int progress) {
method setMaxProgress (line 81) | public void setMaxProgress(final int maxProgress) {
method setSize (line 88) | public void setSize(final int size) {
method setMaxSize (line 95) | public void setMaxSize(final int maxSize) {
method onSizeChanged (line 102) | @Override
method updatePath (line 109) | private void updatePath(final int w, final int h) {
method onMeasure (line 130) | @Override
method getBaseline (line 151) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/CurrencyAmountView.java
class CurrencyAmountView (line 48) | public final class CurrencyAmountView extends FrameLayout {
type Listener (line 49) | public interface Listener {
method changed (line 50) | void changed();
method focusChanged (line 52) | void focusChanged(final boolean hasFocus);
method CurrencyAmountView (line 70) | public CurrencyAmountView(final Context context) {
method CurrencyAmountView (line 75) | public CurrencyAmountView(final Context context, final AttributeSet at...
method init (line 80) | private void init(final Context context) {
method onFinishInflate (line 87) | @Override
method setCurrencySymbol (line 117) | public void setCurrencySymbol(@Nullable final String currencyCode) {
method setInputFormat (line 156) | public void setInputFormat(final MonetaryFormat inputFormat) {
method setHintFormat (line 160) | public void setHintFormat(final MonetaryFormat hintFormat) {
method setHint (line 165) | public void setHint(@Nullable final Monetary hint) {
method setAmountSigned (line 170) | public void setAmountSigned(final boolean amountSigned) {
method setValidateAmount (line 174) | public void setValidateAmount(final boolean validateAmount) {
method setContextButton (line 178) | public void setContextButton(final int contextButtonResId, final OnCli...
method setListener (line 185) | public void setListener(final Listener listener) {
method getAmount (line 189) | @Nullable
method setAmount (line 201) | public void setAmount(@Nullable final Monetary amount, final boolean f...
method setEnabled (line 214) | @Override
method setTextColor (line 223) | public void setTextColor(final int color) {
method setStrikeThru (line 229) | public void setStrikeThru(final boolean strikeThru) {
method getTextView (line 236) | public TextView getTextView() {
method setNextFocusId (line 240) | public void setNextFocusId(final int nextFocusId) {
method isValidAmount (line 245) | private boolean isValidAmount(final boolean zeroIsValid) {
method onClick (line 269) | @Override
method updateAppearance (line 276) | private void updateAppearance() {
method onSaveInstanceState (line 303) | @Override
method onRestoreInstanceState (line 312) | @Override
class TextViewListener (line 326) | private final class TextViewListener implements TextWatcher, OnFocusCh...
method setFire (line 329) | public void setFire(final boolean fire) {
method afterTextChanged (line 333) | @Override
method beforeTextChanged (line 347) | @Override
method onTextChanged (line 351) | @Override
method onFocusChange (line 358) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/CurrencyCalculatorLink.java
class CurrencyCalculatorLink (line 31) | public final class CurrencyCalculatorLink {
method changed (line 41) | @Override
method focusChanged (line 52) | @Override
method changed (line 60) | @Override
method focusChanged (line 71) | @Override
method CurrencyCalculatorLink (line 78) | public CurrencyCalculatorLink(final CurrencyAmountView btcAmountView, ...
method setListener (line 88) | public void setListener(@Nullable final Listener listener) {
method setEnabled (line 92) | public void setEnabled(final boolean enabled) {
method setExchangeRate (line 98) | public void setExchangeRate(final ExchangeRate exchangeRate) {
method getExchangeRate (line 104) | public ExchangeRate getExchangeRate() {
method getAmount (line 108) | @Nullable
method hasAmount (line 129) | public boolean hasAmount() {
method update (line 133) | private void update() {
method setExchangeDirection (line 174) | public void setExchangeDirection(final boolean exchangeDirection) {
method getExchangeDirection (line 180) | public boolean getExchangeDirection() {
method activeTextView (line 184) | public View activeTextView() {
method requestFocus (line 191) | public void requestFocus() {
method setBtcAmount (line 195) | public void setBtcAmount(final Coin amount) {
method setNextFocusId (line 204) | public void setNextFocusId(final int nextFocusId) {
FILE: wallet/src/de/schildbach/wallet/ui/CurrencySymbolDrawable.java
class CurrencySymbolDrawable (line 30) | public final class CurrencySymbolDrawable extends Drawable {
method CurrencySymbolDrawable (line 35) | public CurrencySymbolDrawable(final String symbol, final float textSiz...
method draw (line 44) | @Override
method getIntrinsicWidth (line 49) | @Override
method getOpacity (line 54) | @Override
method setAlpha (line 59) | @Override
method setColorFilter (line 63) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/CurrencyTextView.java
class CurrencyTextView (line 37) | public final class CurrencyTextView extends TextView {
method CurrencyTextView (line 46) | public CurrencyTextView(final Context context) {
method CurrencyTextView (line 50) | public CurrencyTextView(final Context context, final AttributeSet attr...
method setAmount (line 54) | public void setAmount(final Monetary amount) {
method setFormat (line 59) | public void setFormat(@Nullable final MonetaryFormat format) {
method setAlwaysSigned (line 64) | public void setAlwaysSigned(final boolean alwaysSigned) {
method setStrikeThru (line 69) | public void setStrikeThru(final boolean strikeThru) {
method setInsignificantRelativeSize (line 76) | public void setInsignificantRelativeSize(final float insignificantRela...
method setPrefixColor (line 86) | public void setPrefixColor(final int prefixColor) {
method setPrefixScaleX (line 91) | public void setPrefixScaleX(final float prefixScaleX) {
method onFinishInflate (line 96) | @Override
method updateView (line 106) | private void updateView() {
FILE: wallet/src/de/schildbach/wallet/ui/DialogBuilder.java
class DialogBuilder (line 36) | public class DialogBuilder extends AlertDialog.Builder {
method dialog (line 41) | public static DialogBuilder dialog(final Context context, @StringRes f...
method dialog (line 47) | public static DialogBuilder dialog(final Context context, @StringRes f...
method warn (line 55) | public static DialogBuilder warn(final Context context, @StringRes fin...
method warn (line 61) | public static DialogBuilder warn(final Context context, @StringRes fin...
method custom (line 68) | public static DialogBuilder custom(final Context context, @StringRes f...
method DialogBuilder (line 76) | protected DialogBuilder(final Context context) {
method setIcon (line 83) | @Override
method setIcon (line 94) | @Override
method setTitle (line 105) | @Override
method setTitle (line 115) | @Override
method setMessage (line 125) | @Override
method setMessage (line 132) | @Override
method singleDismissButton (line 139) | public DialogBuilder singleDismissButton(@Nullable final OnClickListen...
FILE: wallet/src/de/schildbach/wallet/ui/DialogEvent.java
class DialogEvent (line 26) | public class DialogEvent extends Event<DialogEvent.Params> {
method dialog (line 27) | public static DialogEvent dialog(@StringRes final int titleResId, @Str...
method warn (line 32) | public static DialogEvent warn(@StringRes final int titleResId, @Strin...
method DialogEvent (line 37) | private DialogEvent(final boolean warn, @StringRes final int titleResI...
class Observer (line 42) | public static class Observer extends Event.Observer<Params> {
method Observer (line 45) | public Observer(final Context context) {
method onEvent (line 49) | @Override
method onDialogEvent (line 54) | protected void onDialogEvent(final boolean warn, @StringRes final in...
method onBuildButtons (line 65) | protected void onBuildButtons(final DialogBuilder dialog) {
class Params (line 70) | protected static class Params {
method Params (line 78) | private Params(final boolean warn, @StringRes final int titleResId, ...
FILE: wallet/src/de/schildbach/wallet/ui/DividerItemDecoration.java
class DividerItemDecoration (line 28) | public class DividerItemDecoration extends RecyclerView.ItemDecoration {
method DividerItemDecoration (line 37) | public DividerItemDecoration(final Context context, final int orientat...
method setOrientation (line 44) | public void setOrientation(final int orientation) {
method onDraw (line 51) | @Override
method drawVertical (line 59) | public void drawVertical(final Canvas c, final RecyclerView parent) {
method drawHorizontal (line 74) | public void drawHorizontal(final Canvas c, final RecyclerView parent) {
method getItemOffsets (line 89) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/EditAddressBookEntryFragment.java
class EditAddressBookEntryFragment (line 47) | public final class EditAddressBookEntryFragment extends DialogFragment {
method edit (line 53) | public static void edit(final FragmentManager fm, final Address addres...
method edit (line 57) | private static void edit(final FragmentManager fm, final Address address,
method instance (line 63) | private static EditAddressBookEntryFragment instance(final Address add...
method onAttach (line 81) | @Override
method onCreate (line 90) | @Override
method onCreateDialog (line 96) | @Override
method maybeSelectAddress (line 152) | private void maybeSelectAddress(final Address address) {
FILE: wallet/src/de/schildbach/wallet/ui/EncryptKeysDialogFragment.java
class EncryptKeysDialogFragment (line 58) | public class EncryptKeysDialogFragment extends DialogFragment {
method show (line 61) | public static void show(final FragmentManager fm) {
type State (line 88) | private enum State {
method onTextChanged (line 97) | @Override
method beforeTextChanged (line 103) | @Override
method afterTextChanged (line 107) | @Override
method onAttach (line 112) | @Override
method onCreate (line 121) | @Override
method onCreateDialog (line 133) | @Override
method onResume (line 183) | @Override
method onDismiss (line 190) | @Override
method onDestroy (line 204) | @Override
method handleGo (line 211) | private void handleGo() {
method wipePasswords (line 285) | private void wipePasswords() {
method updateView (line 290) | private void updateView() {
FILE: wallet/src/de/schildbach/wallet/ui/Event.java
class Event (line 25) | public class Event<T> {
method simple (line 29) | public static Event<Void> simple() {
method Event (line 33) | public Event(final T content) {
method hasBeenHandled (line 37) | public boolean hasBeenHandled() {
method getContentOrThrow (line 41) | public T getContentOrThrow() {
method getContentIfNotHandled (line 47) | public T getContentIfNotHandled() {
class Observer (line 54) | public static abstract class Observer<T> implements androidx.lifecycle...
method onChanged (line 55) | @Override
method onEvent (line 61) | protected abstract void onEvent(final T content);
FILE: wallet/src/de/schildbach/wallet/ui/ExchangeRatesActivity.java
class ExchangeRatesActivity (line 26) | public final class ExchangeRatesActivity extends AbstractWalletActivity {
method onCreate (line 27) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/ExchangeRatesAdapter.java
class ExchangeRatesAdapter (line 56) | public class ExchangeRatesAdapter extends ListAdapter<ExchangeRatesAdapt...
method buildListItems (line 57) | public static List<ListItem> buildListItems(final List<ExchangeRateEnt...
class ListItem (line 76) | public static class ListItem {
method ListItem (line 86) | public ListItem(final String source, final String currencyCode, fina...
method id (line 96) | private static long id(final String source, final String currencyCod...
type OnClickListener (line 103) | public interface OnClickListener {
method onExchangeRateClick (line 104) | void onExchangeRateClick(View view, String exchangeRateCode);
type ContextMenuCallback (line 107) | public interface ContextMenuCallback {
method onInflateBlockContextMenu (line 108) | void onInflateBlockContextMenu(MenuInflater inflater, Menu menu);
method onClickBlockContextMenuItem (line 110) | boolean onClickBlockContextMenuItem(MenuItem item, String exchangeRa...
type ChangeType (line 125) | private enum ChangeType {
method ExchangeRatesAdapter (line 129) | public ExchangeRatesAdapter(final Context context, @Nullable final OnC...
method setSelectedExchangeRate (line 173) | @MainThread
method positionOf (line 184) | @MainThread
method getItemId (line 197) | @Override
method onCreateViewHolder (line 203) | @Override
method onBindViewHolder (line 208) | @Override
method onBindViewHolder (line 213) | @Override
class ViewHolder (line 260) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 267) | public ViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/ExchangeRatesFragment.java
class ExchangeRatesFragment (line 51) | public final class ExchangeRatesFragment extends Fragment implements OnS...
method onAttach (line 63) | @Override
method onCreate (line 71) | @Override
method onCreateView (line 116) | @Override
method onDestroy (line 128) | @Override
method maybeSubmitList (line 134) | private void maybeSubmitList() {
method onExchangeRateClick (line 141) | @Override
method onInflateBlockContextMenu (line 146) | public void onInflateBlockContextMenu(final MenuInflater inflater, fin...
method onClickBlockContextMenuItem (line 150) | @Override
method onCreateOptionsMenu (line 161) | @Override
method onSharedPreferenceChanged (line 196) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/ExchangeRatesViewModel.java
class ExchangeRatesViewModel (line 38) | public class ExchangeRatesViewModel extends AndroidViewModel {
method ExchangeRatesViewModel (line 48) | public ExchangeRatesViewModel(final Application application) {
method getExchangeRates (line 55) | public LiveData<List<ExchangeRateEntry>> getExchangeRates() {
method setConstraint (line 59) | public void setConstraint(final String constraint) {
method isConstrained (line 73) | public boolean isConstrained() {
method getBalance (line 77) | public WalletBalanceLiveData getBalance() {
method setInitialExchangeRate (line 83) | @MainThread
method getInitialExchangeRate (line 88) | @MainThread
FILE: wallet/src/de/schildbach/wallet/ui/HelpDialogFragment.java
class HelpDialogFragment (line 33) | public final class HelpDialogFragment extends DialogFragment {
method page (line 38) | public static void page(final FragmentManager fm, final int messageRes...
method instance (line 43) | private static HelpDialogFragment instance(final int messageResId) {
method onAttach (line 57) | @Override
method onCreate (line 63) | @Override
method onCreateDialog (line 69) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/InputParser.java
class InputParser (line 61) | public abstract class InputParser {
class StringInputParser (line 64) | public abstract static class StringInputParser extends InputParser {
method StringInputParser (line 67) | public StringInputParser(final String input) {
method parse (line 71) | @Override
method handlePrivateKey (line 140) | protected void handlePrivateKey(final PrefixedChecksummedBytes key) {
class BinaryInputParser (line 148) | public abstract static class BinaryInputParser extends InputParser {
method BinaryInputParser (line 152) | public BinaryInputParser(final String inputType, final byte[] input) {
method parse (line 157) | @Override
method handleDirectTransaction (line 186) | @Override
class StreamInputParser (line 192) | public abstract static class StreamInputParser extends InputParser {
method StreamInputParser (line 196) | public StreamInputParser(final String inputType, final InputStream i...
method parse (line 201) | @Override
method handleDirectTransaction (line 231) | @Override
method parse (line 237) | public abstract void parse();
method parseAndHandlePaymentRequest (line 239) | protected final void parseAndHandlePaymentRequest(final byte[] seriali...
method parsePaymentRequest (line 246) | public static PaymentIntent parsePaymentRequest(final byte[] serialize...
method handlePaymentIntent (line 305) | protected abstract void handlePaymentIntent(PaymentIntent paymentIntent);
method handleDirectTransaction (line 307) | protected abstract void handleDirectTransaction(Transaction transactio...
method error (line 309) | protected abstract void error(int messageResId, Object... messageArgs);
method cannotClassify (line 311) | protected void cannotClassify(final String input) {
FILE: wallet/src/de/schildbach/wallet/ui/MaybeMaintenanceFragment.java
class MaybeMaintenanceFragment (line 29) | public class MaybeMaintenanceFragment extends Fragment {
method add (line 32) | public static void add(final FragmentManager fm) {
method onCreate (line 42) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/MaybeMaintenanceViewModel.java
class MaybeMaintenanceViewModel (line 38) | public class MaybeMaintenanceViewModel extends AndroidViewModel {
method MaybeMaintenanceViewModel (line 44) | public MaybeMaintenanceViewModel(final Application application) {
method maybeShowDialog (line 52) | private void maybeShowDialog() {
method setDialogWasShown (line 60) | public void setDialogWasShown() {
method getDialogWasShown (line 64) | public boolean getDialogWasShown() {
class WalletMaintenanceRecommendedLiveData (line 68) | public static class WalletMaintenanceRecommendedLiveData extends Abstr...
method WalletMaintenanceRecommendedLiveData (line 69) | public WalletMaintenanceRecommendedLiveData(final WalletApplication ...
method onWalletActive (line 73) | @Override
method load (line 78) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/ProgressDialogFragment.java
class ProgressDialogFragment (line 32) | public class ProgressDialogFragment extends DialogFragment {
class Observer (line 33) | public static class Observer implements androidx.lifecycle.Observer<St...
method Observer (line 36) | public Observer(final FragmentManager fm) {
method onChanged (line 40) | @Override
method onAttach (line 61) | @Override
method onCreate (line 67) | @Override
method onCreateDialog (line 74) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/ReportIssueDialogBuilder.java
class ReportIssueDialogBuilder (line 50) | public abstract class ReportIssueDialogBuilder extends DialogBuilder imp...
method ReportIssueDialogBuilder (line 60) | public ReportIssueDialogBuilder(final Activity activity, final int tit...
method onClick (line 82) | @Override
method startSend (line 180) | private void startSend(final String subject, final CharSequence text, ...
method subject (line 194) | @Nullable
method collectApplicationInfo (line 197) | @Nullable
method collectStackTrace (line 202) | @Nullable
method collectDeviceInfo (line 207) | @Nullable
method collectContextualData (line 212) | @Nullable
method collectWalletDump (line 217) | @Nullable
FILE: wallet/src/de/schildbach/wallet/ui/ReportIssueDialogFragment.java
class ReportIssueDialogFragment (line 68) | public class ReportIssueDialogFragment extends DialogFragment {
method show (line 77) | public static void show(final FragmentManager fm, final int titleResId...
method onAttach (line 99) | @Override
method onCreate (line 106) | @Override
method onCreateDialog (line 114) | @Override
method onDismiss (line 206) | @Override
method appendApplicationInfo (line 212) | private void appendApplicationInfo(final Appendable report, final Wall...
method appendDir (line 301) | private static void appendDir(final Appendable report, final File file...
method appendDeviceInfo (line 318) | private static void appendDeviceInfo(final Appendable report, final Co...
method bluetoothMac (line 351) | private static String bluetoothMac() {
FILE: wallet/src/de/schildbach/wallet/ui/RequestCoinsActivity.java
class RequestCoinsActivity (line 35) | public final class RequestCoinsActivity extends AbstractWalletActivity {
method start (line 38) | public static void start(final Context context) {
method start (line 42) | public static void start(final Context context, final @Nullable Script...
method onCreate (line 53) | @Override
method onAttachedToWindow (line 68) | @Override
method onCreateOptionsMenu (line 73) | @Override
method onOptionsItemSelected (line 80) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/RequestCoinsActivityViewModel.java
class RequestCoinsActivityViewModel (line 26) | public class RequestCoinsActivityViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/RequestCoinsFragment.java
class RequestCoinsFragment (line 72) | public final class RequestCoinsFragment extends Fragment {
method onAttach (line 96) | @Override
method onCreate (line 107) | @Override
method onCreateView (line 154) | @Override
method onViewCreated (line 203) | @Override
method onResume (line 211) | @Override
method onDestroyView (line 234) | @Override
method onPause (line 241) | @Override
method onSaveInstanceState (line 248) | @Override
method saveInstanceState (line 254) | private void saveInstanceState(final Bundle outState) {
method restoreInstanceState (line 260) | private void restoreInstanceState(final Bundle savedInstanceState) {
method onActivityResult (line 266) | @Override
method maybeStartBluetoothListening (line 276) | private boolean maybeStartBluetoothListening() {
method stopBluetoothListening (line 292) | private void stopBluetoothListening() {
method onCreateOptionsMenu (line 300) | @Override
method onPrepareOptionsMenu (line 306) | @Override
method onOptionsItemSelected (line 315) | @Override
method handleCopy (line 331) | private void handleCopy() {
method handleShare (line 338) | private void handleShare() {
method handleLocalApp (line 348) | private void handleLocalApp() {
method createNdefMessage (line 368) | private static NdefMessage createNdefMessage(final byte[] paymentReque...
FILE: wallet/src/de/schildbach/wallet/ui/RequestCoinsViewModel.java
class RequestCoinsViewModel (line 47) | public class RequestCoinsViewModel extends AndroidViewModel {
method RequestCoinsViewModel (line 62) | public RequestCoinsViewModel(final Application application) {
method maybeGenerateQrCode (line 81) | private void maybeGenerateQrCode() {
method maybeGeneratePaymentRequest (line 89) | private void maybeGeneratePaymentRequest() {
method maybeGenerateBitcoinUri (line 99) | private void maybeGenerateBitcoinUri() {
method uri (line 106) | private String uri(final Address address, final Coin amount, final Str...
class FreshReceiveAddressLiveData (line 115) | public static class FreshReceiveAddressLiveData extends AbstractWallet...
method FreshReceiveAddressLiveData (line 118) | public FreshReceiveAddressLiveData(final WalletApplication applicati...
method overrideOutputScriptType (line 122) | public void overrideOutputScriptType(final Script.ScriptType outputS...
method setValue (line 126) | @Override
method onWalletActive (line 131) | @Override
method maybeLoad (line 136) | private void maybeLoad() {
FILE: wallet/src/de/schildbach/wallet/ui/SendCoinsQrActivity.java
class SendCoinsQrActivity (line 38) | public final class SendCoinsQrActivity extends AbstractWalletActivity {
method onCreate (line 43) | @Override
method onActivityResult (line 53) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/SendingAddressesFragment.java
class SendingAddressesFragment (line 56) | public final class SendingAddressesFragment extends Fragment implements ...
method onAttach (line 72) | @Override
method onCreate (line 80) | @Override
method onCreateView (line 118) | @Nullable
method onAddressClick (line 131) | @Override
method onInflateAddressContextMenu (line 136) | @Override
method onClickAddressContextMenuItem (line 141) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/SendingAddressesViewModel.java
class SendingAddressesViewModel (line 42) | public class SendingAddressesViewModel extends AndroidViewModel {
method SendingAddressesViewModel (line 49) | public SendingAddressesViewModel(final Application application) {
class AddressesToExcludeLiveData (line 55) | public static class AddressesToExcludeLiveData extends AbstractWalletL...
method AddressesToExcludeLiveData (line 56) | public AddressesToExcludeLiveData(final WalletApplication applicatio...
method onWalletActive (line 60) | @Override
method loadAddressesToExclude (line 65) | private void loadAddressesToExclude() {
FILE: wallet/src/de/schildbach/wallet/ui/SeparatorViewHolder.java
class SeparatorViewHolder (line 27) | public class SeparatorViewHolder extends RecyclerView.ViewHolder {
method SeparatorViewHolder (line 30) | public SeparatorViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/ShowPasswordCheckListener.java
class ShowPasswordCheckListener (line 29) | public final class ShowPasswordCheckListener implements OnCheckedChangeL...
method ShowPasswordCheckListener (line 32) | public ShowPasswordCheckListener(final EditText... passwordViews) {
method onCheckedChanged (line 36) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/StickToTopLinearLayoutManager.java
class StickToTopLinearLayoutManager (line 27) | public class StickToTopLinearLayoutManager extends LinearLayoutManager {
method StickToTopLinearLayoutManager (line 28) | public StickToTopLinearLayoutManager(final Context context) {
method onItemsAdded (line 32) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/TransactionsAdapter.java
class TransactionsAdapter (line 71) | public class TransactionsAdapter extends ListAdapter<TransactionsAdapter...
method buildListItems (line 72) | public static List<ListItem> buildListItems(final Context context, fin...
class ListItem (line 85) | public static abstract class ListItem {
method ListItem (line 89) | private ListItem(final long id) {
class TransactionItem (line 93) | public static class TransactionItem extends ListItem {
method TransactionItem (line 126) | public TransactionItem(final Context context, final Transaction tx...
method id (line 369) | private static long id(final Sha256Hash txId) {
class WarningItem (line 374) | public static class WarningItem extends ListItem {
method WarningItem (line 377) | public WarningItem(final WarningType type) {
method id (line 382) | private static long id(final WarningType type) {
type WarningType (line 388) | public enum WarningType {
type OnClickListener (line 392) | public interface OnClickListener {
method onTransactionClick (line 393) | void onTransactionClick(View view, Sha256Hash transactionId);
method onWarningClick (line 395) | void onWarningClick(View view, WarningType warning);
type ContextMenuCallback (line 398) | public interface ContextMenuCallback {
method onInflateTransactionContextMenu (line 399) | void onInflateTransactionContextMenu(MenuInflater inflater, Menu men...
method onClickTransactionContextMenuItem (line 401) | boolean onClickTransactionContextMenuItem(MenuItem item, Sha256Hash ...
type ChangeType (line 422) | private enum ChangeType {
method TransactionsAdapter (line 426) | public TransactionsAdapter(final Context context, @Nullable final OnCl...
method setSelectedTransaction (line 579) | @MainThread
method positionOf (line 590) | @MainThread
method getItemViewType (line 603) | @Override
method getItemId (line 614) | @Override
method onCreateViewHolder (line 620) | @Override
method onBindViewHolder (line 630) | @Override
method onBindViewHolder (line 635) | @Override
class TransactionViewHolder (line 713) | public static class TransactionViewHolder extends RecyclerView.ViewHol...
method TransactionViewHolder (line 731) | public TransactionViewHolder(final View itemView) {
method fullBind (line 755) | public void fullBind(final TransactionItem item) {
method bindConfidence (line 765) | private void bindConfidence(final TransactionItem item, final boolea...
method bindTime (line 808) | private void bindTime(final TransactionItem item, final boolean isSe...
method bindAddress (line 822) | private void bindAddress(final TransactionItem item, final boolean i...
method bindFee (line 830) | private void bindFee(final TransactionItem item, final boolean isSel...
method bindValue (line 837) | private void bindValue(final TransactionItem item) {
method bindFiat (line 845) | private void bindFiat(final TransactionItem item) {
method bindMessage (line 853) | private void bindMessage(final TransactionItem item, final boolean i...
class WarningViewHolder (line 861) | public static class WarningViewHolder extends RecyclerView.ViewHolder {
method WarningViewHolder (line 864) | private WarningViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/WalletActionsFragment.java
class WalletActionsFragment (line 34) | public final class WalletActionsFragment extends Fragment {
method onAttach (line 37) | @Override
method onCreateView (line 43) | @Override
method onResume (line 61) | @Override
method updateView (line 68) | private void updateView() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletActivity.java
class WalletActivity (line 71) | public final class WalletActivity extends AbstractWalletActivity {
method onCreate (line 84) | @Override
method onResume (line 196) | @Override
method onPause (line 206) | @Override
method buildEnterAnimation (line 213) | private AnimatorSet buildEnterAnimation(final View contentView) {
method onNewIntent (line 302) | @Override
method handleIntent (line 308) | private void handleIntent(final Intent intent) {
method onActivityResult (line 333) | @Override
method onCreateOptionsMenu (line 371) | @Override
method onPrepareOptionsMenu (line 380) | @Override
method onOptionsItemSelected (line 410) | @Override
method handleRequestCoins (line 465) | public void handleRequestCoins() {
method handleSendCoins (line 469) | public void handleSendCoins() {
method handleScan (line 473) | public void handleScan(final View clickView) {
class QuickReturnBehavior (line 480) | private static final class QuickReturnBehavior extends CoordinatorLayo...
method onStartNestedScroll (line 481) | @Override
method onNestedScroll (line 487) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletActivityViewModel.java
class WalletActivityViewModel (line 34) | public class WalletActivityViewModel extends AndroidViewModel implements...
type EnterAnimationState (line 35) | public enum EnterAnimationState {
method WalletActivityViewModel (line 52) | public WalletActivityViewModel(final Application application) {
method animateWhenLoadingFinished (line 59) | public void animateWhenLoadingFinished() {
method onFirstPreDraw (line 64) | @Override
method balanceLoadingFinished (line 71) | public void balanceLoadingFinished() {
method addressLoadingFinished (line 76) | public void addressLoadingFinished() {
method transactionsLoadingFinished (line 81) | public void transactionsLoadingFinished() {
method animationFinished (line 86) | public void animationFinished() {
method maybeToggleState (line 90) | private void maybeToggleState() {
class WalletEncryptedLiveData (line 100) | public static class WalletEncryptedLiveData extends AbstractWalletLive...
method WalletEncryptedLiveData (line 101) | public WalletEncryptedLiveData(final WalletApplication application) {
method onWalletActive (line 105) | @Override
method load (line 110) | @Override
class WalletLegacyFallbackLiveData (line 120) | public static class WalletLegacyFallbackLiveData extends AbstractWalle...
method WalletLegacyFallbackLiveData (line 121) | public WalletLegacyFallbackLiveData(final WalletApplication applicat...
method onWalletActive (line 125) | @Override
method load (line 130) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletAddressDialogFragment.java
class WalletAddressDialogFragment (line 43) | public class WalletAddressDialogFragment extends DialogFragment {
method show (line 52) | public static void show(final FragmentManager fm) {
method instance (line 56) | private static WalletAddressDialogFragment instance() {
method onAttach (line 62) | @Override
method onCreate (line 68) | @Override
method onCreateDialog (line 86) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletAddressFragment.java
class WalletAddressFragment (line 43) | public final class WalletAddressFragment extends Fragment {
method onAttach (line 57) | @Override
method onCreate (line 64) | @Override
method onCreateView (line 94) | @Override
method createNdefMessage (line 108) | private static NdefMessage createNdefMessage(final String uri) {
FILE: wallet/src/de/schildbach/wallet/ui/WalletAddressViewModel.java
class WalletAddressViewModel (line 51) | public class WalletAddressViewModel extends AndroidViewModel {
method WalletAddressViewModel (line 59) | public WalletAddressViewModel(final Application application) {
method maybeGenerateQrCode (line 70) | private void maybeGenerateQrCode() {
method maybeGenerateBitcoinUri (line 77) | private void maybeGenerateBitcoinUri() {
method uri (line 84) | private String uri(final Address address, @Nullable final String label) {
class CurrentAddressLiveData (line 92) | public static class CurrentAddressLiveData extends AbstractWalletLiveD...
method CurrentAddressLiveData (line 93) | public CurrentAddressLiveData(final WalletApplication application) {
method onWalletActive (line 97) | @Override
method onWalletInactive (line 103) | @Override
method addWalletListener (line 108) | private void addWalletListener(final Wallet wallet) {
method removeWalletListener (line 115) | private void removeWalletListener(final Wallet wallet) {
method load (line 122) | @Override
class WalletListener (line 133) | private class WalletListener implements WalletCoinsReceivedEventList...
method onCoinsReceived (line 135) | @Override
method onCoinsSent (line 141) | @Override
method onReorganize (line 147) | @Override
method onWalletChanged (line 152) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletAddressesFragment.java
class WalletAddressesFragment (line 62) | public final class WalletAddressesFragment extends Fragment implements A...
method onAttach (line 80) | @Override
method onCreate (line 89) | @Override
method onCreateView (line 126) | @Nullable
method maybeSubmitList (line 139) | private void maybeSubmitList() {
method onAddressClick (line 150) | @Override
method onInflateAddressContextMenu (line 155) | @Override
method onClickAddressContextMenuItem (line 161) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletAddressesViewModel.java
class WalletAddressesViewModel (line 46) | public class WalletAddressesViewModel extends AndroidViewModel {
method WalletAddressesViewModel (line 55) | public WalletAddressesViewModel(final Application application) {
class IssuedReceiveAddressesLiveData (line 64) | public static class IssuedReceiveAddressesLiveData extends AbstractWal...
method IssuedReceiveAddressesLiveData (line 66) | public IssuedReceiveAddressesLiveData(final WalletApplication applic...
method onWalletActive (line 70) | @Override
method onWalletInactive (line 76) | @Override
method onKeysAdded (line 81) | @Override
method loadAddresses (line 86) | private void loadAddresses() {
class ImportedAddressesLiveData (line 96) | public static class ImportedAddressesLiveData extends AbstractWalletLi...
method ImportedAddressesLiveData (line 98) | public ImportedAddressesLiveData(final WalletApplication application) {
method onWalletActive (line 102) | @Override
method onWalletInactive (line 108) | @Override
method onKeysAdded (line 113) | @Override
method loadAddresses (line 118) | private void loadAddresses() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletBalanceFragment.java
class WalletBalanceFragment (line 50) | public final class WalletBalanceFragment extends Fragment {
method onAttach (line 68) | @Override
method onCreate (line 78) | @Override
method onCreateView (line 97) | @Override
method onViewCreated (line 103) | @Override
method onCreateOptionsMenu (line 129) | @Override
method onPrepareOptionsMenu (line 135) | @Override
method onOptionsItemSelected (line 144) | @Override
method handleDonate (line 153) | private void handleDonate() {
method updateView (line 157) | private void updateView() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletBalanceViewModel.java
class WalletBalanceViewModel (line 29) | public class WalletBalanceViewModel extends AndroidViewModel {
method WalletBalanceViewModel (line 34) | public WalletBalanceViewModel(final Application application) {
method getBalance (line 39) | public WalletBalanceLiveData getBalance() {
method getExchangeRate (line 45) | public SelectedExchangeRateLiveData getExchangeRate() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletDisclaimerFragment.java
class WalletDisclaimerFragment (line 42) | public final class WalletDisclaimerFragment extends Fragment {
method onAttach (line 51) | @Override
method onCreate (line 58) | @Override
method onCreateView (line 69) | @Override
method updateView (line 77) | private void updateView() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletDisclaimerViewModel.java
class WalletDisclaimerViewModel (line 31) | public class WalletDisclaimerViewModel extends AndroidViewModel {
method WalletDisclaimerViewModel (line 35) | public WalletDisclaimerViewModel(final Application application) {
method getDisclaimerEnabled (line 40) | public DisclaimerEnabledLiveData getDisclaimerEnabled() {
class DisclaimerEnabledLiveData (line 46) | public static class DisclaimerEnabledLiveData extends LiveData<Boolean>
method DisclaimerEnabledLiveData (line 50) | public DisclaimerEnabledLiveData(final WalletApplication application) {
method onActive (line 54) | @Override
method onInactive (line 60) | @Override
method onSharedPreferenceChanged (line 65) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/WalletTransactionsFragment.java
class WalletTransactionsFragment (line 65) | public class WalletTransactionsFragment extends Fragment implements Tran...
method onAttach (line 87) | @Override
method onCreate (line 97) | @Override
method onCreateView (line 173) | @Override
method onResume (line 206) | @Override
method onCreateOptionsMenu (line 212) | @Override
method onPrepareOptionsMenu (line 219) | @Override
method onOptionsItemSelected (line 235) | @Override
method onTransactionClick (line 256) | @Override
method onInflateTransactionContextMenu (line 261) | @Override
method onClickTransactionContextMenuItem (line 296) | @Override
method onWarningClick (line 328) | @Override
method warning (line 336) | private TransactionsAdapter.WarningType warning() {
FILE: wallet/src/de/schildbach/wallet/ui/WalletTransactionsViewModel.java
class WalletTransactionsViewModel (line 60) | public class WalletTransactionsViewModel extends AndroidViewModel {
type Direction (line 61) | public enum Direction {
method WalletTransactionsViewModel (line 79) | public WalletTransactionsViewModel(final Application application) {
method setDirection (line 95) | public void setDirection(final Direction direction) {
method setWarning (line 99) | public void setWarning(final TransactionsAdapter.WarningType warning) {
method maybePostList (line 103) | private void maybePostList() {
class TransactionsLiveData (line 146) | public static class TransactionsLiveData extends AbstractWalletLiveDat...
method TransactionsLiveData (line 149) | public TransactionsLiveData(final WalletApplication application) {
method onWalletActive (line 153) | @Override
method onWalletInactive (line 159) | @Override
method addWalletListener (line 164) | private void addWalletListener(final Wallet wallet) {
method removeWalletListener (line 171) | private void removeWalletListener(final Wallet wallet) {
method load (line 178) | @Override
class WalletListener (line 189) | private class WalletListener implements WalletCoinsReceivedEventList...
method onCoinsReceived (line 191) | @Override
method onCoinsSent (line 197) | @Override
method onReorganize (line 203) | @Override
method onWalletChanged (line 208) | @Override
class TransactionsConfidenceLiveData (line 215) | private static class TransactionsConfidenceLiveData extends AbstractWa...
method TransactionsConfidenceLiveData (line 217) | public TransactionsConfidenceLiveData(final WalletApplication applic...
method onWalletActive (line 221) | @Override
method onWalletInactive (line 226) | @Override
method onTransactionConfidenceChanged (line 231) | @Override
method load (line 236) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/backup/BackupWalletActivity.java
class BackupWalletActivity (line 28) | public class BackupWalletActivity extends AbstractWalletActivity {
method start (line 30) | public static void start(final Context context) {
method onCreate (line 34) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/backup/BackupWalletDialogFragment.java
class BackupWalletDialogFragment (line 79) | public class BackupWalletDialogFragment extends DialogFragment {
method show (line 82) | public static void show(final FragmentManager fm) {
method onTextChanged (line 105) | @Override
method beforeTextChanged (line 110) | @Override
method afterTextChanged (line 114) | @Override
method onAttach (line 119) | @Override
method onCreate (line 126) | @Override
method onCreateDialog (line 135) | @Override
method onDismiss (line 214) | @Override
method onCancel (line 226) | @Override
method handleGo (line 232) | private void handleGo() {
method wipePasswords (line 243) | private void wipePasswords() {
method backupWallet (line 248) | private void backupWallet() {
method onActivityResult (line 271) | @Override
class SuccessDialogFragment (line 341) | public static class SuccessDialogFragment extends DialogFragment {
method showDialog (line 347) | public static void showDialog(final FragmentManager fm, final String...
method onAttach (line 355) | @Override
method onCreateDialog (line 361) | @Override
class ErrorDialogFragment (line 371) | public static class ErrorDialogFragment extends DialogFragment {
method showDialog (line 377) | public static void showDialog(final FragmentManager fm, final String...
method onAttach (line 385) | @Override
method onCreateDialog (line 391) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/backup/BackupWalletViewModel.java
class BackupWalletViewModel (line 26) | public class BackupWalletViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/backup/FileAdapter.java
class FileAdapter (line 34) | public abstract class FileAdapter extends ArrayAdapter<File> {
method FileAdapter (line 38) | public FileAdapter(final Context context) {
method setFiles (line 45) | public void setFiles(final List<File> files) {
method getView (line 51) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/backup/ImportDialogButtonEnablerListener.java
class ImportDialogButtonEnablerListener (line 33) | public class ImportDialogButtonEnablerListener implements TextWatcher, O...
method ImportDialogButtonEnablerListener (line 37) | public ImportDialogButtonEnablerListener(final TextView passwordView, ...
method onItemSelected (line 44) | @Override
method onNothingSelected (line 49) | @Override
method afterTextChanged (line 54) | @Override
method beforeTextChanged (line 59) | @Override
method onTextChanged (line 63) | @Override
method handle (line 67) | public void handle() {
method hasFile (line 76) | protected boolean hasFile() {
method needsPassword (line 80) | protected boolean needsPassword() {
FILE: wallet/src/de/schildbach/wallet/ui/backup/RestoreWalletDialogFragment.java
class RestoreWalletDialogFragment (line 69) | public class RestoreWalletDialogFragment extends DialogFragment {
method showPick (line 89) | public static void showPick(final FragmentManager fm) {
method show (line 94) | public static void show(final FragmentManager fm, final Uri backupUri) {
method onAttach (line 102) | @Override
method onCreate (line 112) | @Override
method onActivityResult (line 161) | @Override
method onCreateDialog (line 182) | @Override
method handleRestore (line 227) | private void handleRestore(final String password) {
method restoreWalletFromEncrypted (line 249) | private Wallet restoreWalletFromEncrypted(final InputStream cipher, fi...
class SuccessDialogFragment (line 261) | public static class SuccessDialogFragment extends DialogFragment {
method showDialog (line 267) | public static void showDialog(final FragmentManager fm, final boolea...
method onAttach (line 275) | @Override
method onCreateDialog (line 281) | @Override
class FailureDialogFragment (line 301) | public static class FailureDialogFragment extends DialogFragment {
method showDialog (line 308) | public static void showDialog(final FragmentManager fm, final String...
method onAttach (line 317) | @Override
method onCreateDialog (line 323) | @Override
method maybeFinishActivity (line 343) | private void maybeFinishActivity() {
FILE: wallet/src/de/schildbach/wallet/ui/backup/RestoreWalletFromExternalActivity.java
class RestoreWalletFromExternalActivity (line 28) | public final class RestoreWalletFromExternalActivity extends AbstractWal...
method onCreate (line 32) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/backup/RestoreWalletViewModel.java
class RestoreWalletViewModel (line 31) | public class RestoreWalletViewModel extends AndroidViewModel {
method RestoreWalletViewModel (line 39) | public RestoreWalletViewModel(final Application application) {
FILE: wallet/src/de/schildbach/wallet/ui/monitor/BlockListAdapter.java
class BlockListAdapter (line 70) | public class BlockListAdapter extends ListAdapter<BlockListAdapter.ListI...
method buildListItems (line 71) | public static List<ListItem> buildListItems(final Context context, fin...
method buildTransactionItems (line 97) | private static List<ListItem.TxItem> buildTransactionItems(final Conte...
class ListItem (line 151) | public static abstract class ListItem {
method ListItem (line 155) | private ListItem(final long id) {
class BlockItem (line 159) | public static class BlockItem extends ListItem {
method BlockItem (line 166) | public BlockItem(final Sha256Hash blockHash, final int height, fin...
method id (line 176) | private static long id(final Sha256Hash blockHash) {
class TxItem (line 182) | public static class TxItem {
method TxItem (line 189) | public TxItem(final CharSequence fromTo, final CharSequence addres...
class SeparatorItem (line 199) | public static class SeparatorItem extends ListItem {
method SeparatorItem (line 202) | public SeparatorItem(final CharSequence label) {
method id (line 207) | private static long id(final CharSequence label) {
type OnClickListener (line 215) | public interface OnClickListener {
method onBlockClick (line 216) | void onBlockClick(View view, Sha256Hash blockHash);
type ContextMenuCallback (line 219) | public interface ContextMenuCallback {
method onInflateBlockContextMenu (line 220) | void onInflateBlockContextMenu(MenuInflater inflater, Menu menu);
method onClickBlockContextMenuItem (line 222) | boolean onClickBlockContextMenuItem(MenuItem item, Sha256Hash blockH...
type ChangeType (line 243) | private enum ChangeType {
method BlockListAdapter (line 247) | public BlockListAdapter(final Context context, @Nullable final OnClick...
method setSelectedBlock (line 291) | @MainThread
method positionOf (line 302) | @MainThread
method getItemViewType (line 315) | @Override
method getItemId (line 326) | @Override
method onCreateViewHolder (line 332) | @Override
method onBindViewHolder (line 342) | @Override
method onBindViewHolder (line 347) | @Override
method bindTransactionView (line 414) | private void bindTransactionView(final View row, final MonetaryFormat ...
class BlockViewHolder (line 426) | public static class BlockViewHolder extends RecyclerView.ViewHolder {
method BlockViewHolder (line 433) | private BlockViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/monitor/BlockListFragment.java
class BlockListFragment (line 53) | public final class BlockListFragment extends Fragment implements BlockLi...
method onAttach (line 69) | @Override
method onCreate (line 77) | @Override
method onCreateView (line 106) | @Override
method maybeSubmitList (line 118) | private void maybeSubmitList() {
method onBlockClick (line 128) | @Override
method onInflateBlockContextMenu (line 133) | @Override
method onClickBlockContextMenuItem (line 139) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/monitor/BlockListViewModel.java
class BlockListViewModel (line 46) | public class BlockListViewModel extends AndroidViewModel {
method BlockListViewModel (line 56) | public BlockListViewModel(final Application application) {
method maybeRefreshBlocks (line 66) | private void maybeRefreshBlocks() {
method getTransactions (line 72) | public TransactionsLiveData getTransactions() {
method getTime (line 78) | public TimeLiveData getTime() {
class TransactionsLiveData (line 84) | public static class TransactionsLiveData extends AbstractWalletLiveDat...
method TransactionsLiveData (line 85) | private TransactionsLiveData(final WalletApplication application) {
method onWalletActive (line 89) | @Override
method loadTransactions (line 94) | public void loadTransactions() {
FILE: wallet/src/de/schildbach/wallet/ui/monitor/NetworkMonitorActivity.java
class NetworkMonitorActivity (line 34) | public final class NetworkMonitorActivity extends AbstractWalletActivity {
method onCreate (line 40) | @Override
class PagerAdapter (line 72) | private class PagerAdapter extends FragmentStateAdapter {
method PagerAdapter (line 73) | public PagerAdapter() {
method getItemCount (line 77) | @Override
method createFragment (line 82) | @NonNull
FILE: wallet/src/de/schildbach/wallet/ui/monitor/NetworkMonitorViewModel.java
class NetworkMonitorViewModel (line 26) | public class NetworkMonitorViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/monitor/PeerListAdapter.java
class PeerListAdapter (line 54) | public class PeerListAdapter extends ListAdapter<PeerListAdapter.ListIte...
method buildListItems (line 55) | public static List<ListItem> buildListItems(final Context context, fin...
class ListItem (line 91) | public static class ListItem {
method ListItem (line 105) | public ListItem(final HostAndPort hostAndPort, final HostAndPort dis...
method id (line 119) | private static long id(final HostAndPort hostAndPort) {
type OnClickListener (line 127) | public interface OnClickListener {
method onPeerClick (line 128) | void onPeerClick(View view, HostAndPort peerHostAndPort);
type ChangeType (line 135) | private enum ChangeType {
method PeerListAdapter (line 144) | public PeerListAdapter(final Context context, @Nullable final OnClickL...
method setSelectedPeer (line 183) | @MainThread
method positionOf (line 194) | @MainThread
method getItemId (line 207) | @Override
method onCreateViewHolder (line 213) | @Override
method onBindViewHolder (line 218) | @Override
method onBindViewHolder (line 223) | @Override
class ViewHolder (line 255) | public static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 264) | private ViewHolder(final View itemView) {
FILE: wallet/src/de/schildbach/wallet/ui/monitor/PeerListFragment.java
class PeerListFragment (line 40) | public final class PeerListFragment extends Fragment implements PeerList...
method onAttach (line 50) | @Override
method onCreate (line 56) | @Override
method onCreateView (line 84) | @Override
method maybeSubmitList (line 96) | private void maybeSubmitList() {
method onPeerClick (line 102) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/monitor/PeerListViewModel.java
class PeerListViewModel (line 39) | public class PeerListViewModel extends AndroidViewModel {
method PeerListViewModel (line 45) | public PeerListViewModel(final Application application) {
method maybeRefreshPeers (line 54) | private void maybeRefreshPeers() {
method getHostnames (line 60) | public HostnamesLiveData getHostnames() {
class HostnamesLiveData (line 66) | public static class HostnamesLiveData extends LiveData<Map<InetAddress...
method HostnamesLiveData (line 69) | public HostnamesLiveData(final WalletApplication application) {
method reverseLookup (line 73) | public void reverseLookup(final InetAddress address) {
FILE: wallet/src/de/schildbach/wallet/ui/preference/AboutFragment.java
class AboutFragment (line 46) | public final class AboutFragment extends PreferenceFragment {
class ApkHashFragment (line 54) | public static class ApkHashFragment extends DialogFragment {
method onCreateDialog (line 55) | @Override
method onAttach (line 70) | @Override
method onCreate (line 80) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/preference/DiagnosticsFragment.java
class DiagnosticsFragment (line 42) | public final class DiagnosticsFragment extends PreferenceFragment {
method onAttach (line 52) | @Override
method onCreate (line 60) | @Override
method onPreferenceTreeClick (line 67) | @Override
method handleInitiateReset (line 82) | private void handleInitiateReset() {
method handleExtendedPublicKey (line 96) | private void handleExtendedPublicKey() {
FILE: wallet/src/de/schildbach/wallet/ui/preference/ExtendedPublicKeyFragment.java
class ExtendedPublicKeyFragment (line 39) | public class ExtendedPublicKeyFragment extends DialogFragment {
method show (line 46) | public static void show(final FragmentManager fm, final CharSequence b...
method instance (line 50) | private static ExtendedPublicKeyFragment instance(final CharSequence b...
method onAttach (line 62) | @Override
method onCreateDialog (line 69) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/preference/PreferenceActivity.java
class PreferenceActivity (line 28) | public final class PreferenceActivity extends android.preference.Prefere...
method onBuildHeaders (line 29) | @Override
method onOptionsItemSelected (line 34) | @Override
method isValidFragment (line 43) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/preference/ResolveDnsTask.java
class ResolveDnsTask (line 32) | public abstract class ResolveDnsTask {
method ResolveDnsTask (line 36) | public ResolveDnsTask(final Handler backgroundHandler) {
method resolve (line 41) | public final void resolve(final HostAndPort hostAndPort) {
method onSuccess (line 54) | protected abstract void onSuccess(HostAndPort hostAndPort, InetSocketA...
method onUnknownHost (line 56) | protected abstract void onUnknownHost(HostAndPort hostAndPort);
FILE: wallet/src/de/schildbach/wallet/ui/preference/SettingsFragment.java
class SettingsFragment (line 57) | public final class SettingsFragment extends PreferenceFragment implement...
method onAttach (line 75) | @Override
method onCreate (line 85) | @Override
method onDestroy (line 144) | @Override
method onPreferenceChange (line 157) | @Override
method updateTrustedPeer (line 171) | private void updateTrustedPeer() {
method appendToTrustedPeerSummary (line 200) | private void appendToTrustedPeerSummary(final String line) {
method updateOwnName (line 212) | private void updateOwnName() {
method updateBluetoothAddress (line 217) | private void updateBluetoothAddress() {
method removeOrDisablePreference (line 239) | private void removeOrDisablePreference(final Preference preference) {
class RestrictToHex (line 246) | private static class RestrictToHex implements InputFilter {
method filter (line 247) | @Override
method afterTextChanged (line 263) | @Override
method beforeTextChanged (line 283) | @Override
method onTextChanged (line 287) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/scan/CameraManager.java
class CameraManager (line 41) | @SuppressWarnings("deprecation")
method getFrame (line 56) | public Rect getFrame() {
method getFramePreview (line 60) | public RectF getFramePreview() {
method getFacing (line 64) | public int getFacing() {
method getOrientation (line 68) | public int getOrientation() {
method open (line 72) | public Camera open(final TextureView textureView, final int displayOri...
method determineCameraId (line 143) | private int determineCameraId() {
method close (line 164) | public void close() {
method findBestPreviewSizeValue (line 183) | private static Camera.Size findBestPreviewSizeValue(final Camera.Param...
method setDesiredCameraParameters (line 230) | @SuppressLint("InlinedApi")
method requestPreviewFrame (line 248) | public void requestPreviewFrame(final PreviewCallback callback) {
method buildLuminanceSource (line 256) | public PlanarYUVLuminanceSource buildLuminanceSource(final byte[] data) {
method setTorch (line 262) | public void setTorch(final boolean enabled) {
method getTorchEnabled (line 267) | private static boolean getTorchEnabled(final Camera camera) {
method setTorchEnabled (line 278) | private static void setTorchEnabled(final Camera camera, final boolean...
method findValue (line 299) | private static String findValue(final Collection<String> values, final...
FILE: wallet/src/de/schildbach/wallet/ui/scan/ScanActivity.java
class ScanActivity (line 79) | @SuppressWarnings("deprecation")
method startForResult (line 86) | public static void startForResult(final Activity activity, @Nullable f...
method startForResult (line 103) | public static void startForResult(final Activity activity, final int r...
method startForResult (line 107) | public static void startForResult(final Fragment fragment, final Activ...
method onCreate (line 131) | @Override
method onResume (line 217) | @Override
method onPause (line 224) | @Override
method onDestroy (line 231) | @Override
method onRequestPermissionsResult (line 245) | @Override
method maybeOpenCamera (line 256) | private void maybeOpenCamera() {
method onSurfaceTextureAvailable (line 262) | @Override
method onSurfaceTextureDestroyed (line 268) | @Override
method onSurfaceTextureSizeChanged (line 274) | @Override
method onSurfaceTextureUpdated (line 278) | @Override
method onAttachedToWindow (line 282) | @Override
method onBackPressed (line 287) | @Override
method onKeyDown (line 294) | @Override
method handleResult (line 306) | public void handleResult(final Result scanResult) {
method postFinish (line 317) | private void postFinish() {
method run (line 322) | @Override
method displayRotation (line 350) | private int displayRotation() {
method run (line 366) | @Override
class AutoFocusRunnable (line 373) | private final class AutoFocusRunnable implements Runnable {
method AutoFocusRunnable (line 376) | public AutoFocusRunnable(final Camera camera) {
method run (line 380) | @Override
method onAutoFocus (line 390) | @Override
method run (line 402) | @Override
method decode (line 407) | private void decode(final byte[] data) {
class WarnDialogFragment (line 425) | public static class WarnDialogFragment extends DialogFragment {
method show (line 428) | public static void show(final FragmentManager fm, final int titleRes...
method onCreateDialog (line 437) | @Override
method onCancel (line 446) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/scan/ScanViewModel.java
class ScanViewModel (line 27) | public class ScanViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/scan/ScannerView.java
class ScannerView (line 41) | public class ScannerView extends View {
method ScannerView (line 57) | public ScannerView(final Context context, final AttributeSet attrs) {
method setFraming (line 81) | public void setFraming(final Rect frame, final RectF framePreview, fin...
method setIsResult (line 92) | public void setIsResult(final boolean isResult) {
method addDot (line 98) | public void addDot(final ResultPoint dot) {
method onDraw (line 104) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/send/DecodePrivateKeyTask.java
class DecodePrivateKeyTask (line 28) | public abstract class DecodePrivateKeyTask {
method DecodePrivateKeyTask (line 32) | public DecodePrivateKeyTask(final Handler backgroundHandler) {
method decodePrivateKey (line 37) | public final void decodePrivateKey(final BIP38PrivateKey encryptedKey,...
method onSuccess (line 49) | protected abstract void onSuccess(ECKey decryptedKey);
method onBadPassphrase (line 51) | protected abstract void onBadPassphrase();
FILE: wallet/src/de/schildbach/wallet/ui/send/DeriveKeyTask.java
class DeriveKeyTask (line 37) | public abstract class DeriveKeyTask {
method DeriveKeyTask (line 44) | public DeriveKeyTask(final Handler backgroundHandler, final int scrypt...
method deriveKey (line 50) | public final void deriveKey(final Wallet wallet, final String password) {
method onSuccess (line 91) | protected abstract void onSuccess(KeyParameter encryptionKey, boolean ...
FILE: wallet/src/de/schildbach/wallet/ui/send/FeeCategory.java
type FeeCategory (line 23) | public enum FeeCategory {
FILE: wallet/src/de/schildbach/wallet/ui/send/MaintenanceDialogFragment.java
class MaintenanceDialogFragment (line 63) | public class MaintenanceDialogFragment extends DialogFragment {
method show (line 66) | public static void show(final FragmentManager fm) {
type State (line 90) | private enum State {
method onAttach (line 98) | @Override
method onCreate (line 106) | @Override
method onCreateDialog (line 116) | @Override
method onResume (line 171) | @Override
method onDismiss (line 178) | @Override
method onDestroy (line 187) | @Override
method handleGo (line 194) | private void handleGo() {
method doMaintenance (line 214) | private void doMaintenance(final KeyParameter encryptionKey) {
method delayedDismiss (line 242) | private void delayedDismiss() {
method wipePasswords (line 246) | private void wipePasswords() {
method updateView (line 250) | private void updateView() {
method determineMaintenanceTransactions (line 272) | private List<Transaction> determineMaintenanceTransactions() {
method onTextChanged (line 284) | @Override
method beforeTextChanged (line 290) | @Override
method afterTextChanged (line 294) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/send/RaiseFeeDialogFragment.java
class RaiseFeeDialogFragment (line 65) | public class RaiseFeeDialogFragment extends DialogFragment {
method show (line 69) | public static void show(final FragmentManager fm, final Sha256Hash tra...
method instance (line 74) | private static RaiseFeeDialogFragment instance(final Sha256Hash transa...
type State (line 108) | private enum State {
method onAttach (line 116) | @Override
method onCreate (line 124) | @Override
method onCreateDialog (line 150) | @Override
method onDismiss (line 191) | @Override
method onDestroy (line 200) | @Override
method handleGo (line 207) | private void handleGo() {
method doRaiseFee (line 229) | private void doRaiseFee(final Wallet wallet, final KeyParameter encryp...
method wipePasswords (line 264) | private void wipePasswords() {
method updateView (line 268) | private void updateView() {
method onTextChanged (line 304) | @Override
method beforeTextChanged (line 310) | @Override
method afterTextChanged (line 314) | @Override
method feeCanLikelyBeRaised (line 319) | public static boolean feeCanLikelyBeRaised(final Wallet wallet, final ...
method findSpendableOutput (line 333) | private static @Nullable TransactionOutput findSpendableOutput(final W...
FILE: wallet/src/de/schildbach/wallet/ui/send/RaiseFeeViewModel.java
class RaiseFeeViewModel (line 28) | public class RaiseFeeViewModel extends AndroidViewModel {
method RaiseFeeViewModel (line 32) | public RaiseFeeViewModel(final Application application) {
method getDynamicFees (line 37) | public DynamicFeeLiveData getDynamicFees() {
FILE: wallet/src/de/schildbach/wallet/ui/send/RequestPaymentRequestTask.java
class RequestPaymentRequestTask (line 49) | public abstract class RequestPaymentRequestTask {
type ResultCallback (line 56) | public interface ResultCallback {
method onPaymentIntent (line 57) | void onPaymentIntent(PaymentIntent paymentIntent);
method onFail (line 59) | void onFail(int messageResId, Object... messageArgs);
method RequestPaymentRequestTask (line 62) | public RequestPaymentRequestTask(final Handler backgroundHandler, fina...
class HttpRequestTask (line 68) | public final static class HttpRequestTask extends RequestPaymentReques...
method HttpRequestTask (line 72) | public HttpRequestTask(final Handler backgroundHandler, final Result...
method requestPaymentRequest (line 79) | @Override
class BluetoothRequestTask (line 129) | public final static class BluetoothRequestTask extends RequestPaymentR...
method BluetoothRequestTask (line 132) | public BluetoothRequestTask(final Handler backgroundHandler, final R...
method requestPaymentRequest (line 139) | @Override
method requestPaymentRequest (line 193) | public abstract void requestPaymentRequest(String url);
method onPaymentIntent (line 195) | protected void onPaymentIntent(final PaymentIntent paymentIntent) {
method onFail (line 199) | protected void onFail(final int messageResId, final Object... messageA...
FILE: wallet/src/de/schildbach/wallet/ui/send/RequestWalletBalanceTask.java
class RequestWalletBalanceTask (line 98) | public final class RequestWalletBalanceTask {
type ResultCallback (line 105) | public interface ResultCallback {
method onResult (line 106) | void onResult(Set<UTXO> utxos);
method onFail (line 108) | void onFail(int messageResId, Object... messageArgs);
method RequestWalletBalanceTask (line 111) | public RequestWalletBalanceTask(final Handler backgroundHandler, final...
method requestWalletBalance (line 117) | public void requestWalletBalance(final AssetManager assets, final ECKe...
method onResult (line 190) | protected void onResult(final Set<UTXO> utxos) {
method onFail (line 194) | protected void onFail(final int messageResId, final Object... messageA...
FILE: wallet/src/de/schildbach/wallet/ui/send/SendCoinsActivity.java
class SendCoinsActivity (line 41) | public final class SendCoinsActivity extends AbstractWalletActivity {
method start (line 47) | public static void start(final Context context, final PaymentIntent pa...
method start (line 58) | public static void start(final Context context, final PaymentIntent pa...
method startDonate (line 62) | public static void startDonate(final Context context, final Coin amoun...
method onCreate (line 70) | @Override
method onCreateOptionsMenu (line 87) | @Override
method onOptionsItemSelected (line 94) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/send/SendCoinsActivityViewModel.java
class SendCoinsActivityViewModel (line 27) | public class SendCoinsActivityViewModel extends ViewModel {
FILE: wallet/src/de/schildbach/wallet/ui/send/SendCoinsFragment.java
class SendCoinsFragment (line 119) | public final class SendCoinsFragment extends Fragment {
class ReceivingAddressListener (line 164) | private final class ReceivingAddressListener
method onFocusChange (line 166) | @Override
method afterTextChanged (line 174) | @Override
method beforeTextChanged (line 183) | @Override
method onTextChanged (line 187) | @Override
method onItemClick (line 191) | @Override
method changed (line 208) | @Override
method focusChanged (line 214) | @Override
method onTextChanged (line 220) | @Override
method beforeTextChanged (line 226) | @Override
method afterTextChanged (line 230) | @Override
class ReceivingAddressViewAdapter (line 235) | private final class ReceivingAddressViewAdapter extends ArrayAdapter<A...
method ReceivingAddressViewAdapter (line 238) | public ReceivingAddressViewAdapter(final Context context) {
method getView (line 243) | @Override
method getFilter (line 254) | @Override
method onClick (line 285) | @Override
method onAttach (line 291) | @Override
method onCreate (line 301) | @Override
method onCreateView (line 380) | @Override
method onDestroyView (line 455) | @Override
method onResume (line 462) | @Override
method onPause (line 473) | @Override
method onDetach (line 481) | @Override
method onDestroy (line 488) | @Override
method onActivityResult (line 494) | @Override
method onActivityResultResumed (line 499) | private void onActivityResultResumed(final int requestCode, final int ...
method onCreateOptionsMenu (line 534) | @Override
method onPrepareOptionsMenu (line 541) | @Override
method onOptionsItemSelected (line 566) | @Override
method validateReceivingAddress (line 588) | private void validateReceivingAddress() {
method handleCancel (line 604) | private void handleCancel() {
method isPayeePlausible (line 611) | private boolean isPayeePlausible() {
method isAmountPlausible (line 621) | private boolean isAmountPlausible() {
method isPasswordPlausible (line 630) | private boolean isPasswordPlausible() {
method everythingPlausible (line 639) | private boolean everythingPlausible() {
method requestFocusFirst (line 644) | private void requestFocusFirst() {
method handleGo (line 657) | private void handleGo() {
method signAndSendPayment (line 677) | private void signAndSendPayment(final KeyParameter encryptionKey) {
method sendPayment (line 714) | private void sendPayment(final SendRequest sendRequest, final Coin fin...
method handleFeeCategory (line 842) | private void handleFeeCategory(final FeeCategory feeCategory) {
method handleEmpty (line 850) | private void handleEmpty() {
method run (line 859) | @Override
method executeDryrun (line 867) | private void executeDryrun() {
method setState (line 893) | private void setState(final SendCoinsViewModel.State state) {
method updateView (line 900) | private void updateView() {
method initStateFromIntentExtras (line 1104) | private void initStateFromIntentExtras(final Bundle extras) {
method initStateFromBitcoinUri (line 1117) | private void initStateFromBitcoinUri(final Uri bitcoinUri) {
method initStateFromPaymentRequest (line 1145) | private void initStateFromPaymentRequest(final String mimeType, final ...
method initStateFromIntentUri (line 1161) | private void initStateFromIntentUri(final String mimeType, final Uri b...
method updateStateFrom (line 1183) | private void updateStateFrom(final PaymentIntent paymentIntent) {
method requestPaymentRequest (line 1220) | private void requestPaymentRequest() {
FILE: wallet/src/de/schildbach/wallet/ui/send/SendCoinsOfflineTask.java
class SendCoinsOfflineTask (line 38) | public abstract class SendCoinsOfflineTask {
method SendCoinsOfflineTask (line 45) | public SendCoinsOfflineTask(final Wallet wallet, final Handler backgro...
method sendCoinsOffline (line 51) | public final void sendCoinsOffline(final SendRequest sendRequest) {
method onSuccess (line 95) | protected abstract void onSuccess(Transaction transaction);
method onInsufficientMoney (line 97) | protected abstract void onInsufficientMoney(Coin missing);
method onInvalidEncryptionKey (line 99) | protected abstract void onInvalidEncryptionKey();
method onEmptyWalletFailed (line 101) | protected void onEmptyWalletFailed() {
method onFailure (line 105) | protected abstract void onFailure(Exception exception);
FILE: wallet/src/de/schildbach/wallet/ui/send/SendCoinsViewModel.java
class SendCoinsViewModel (line 42) | public class SendCoinsViewModel extends AndroidViewModel {
type State (line 43) | public enum State {
method SendCoinsViewModel (line 71) | public SendCoinsViewModel(final Application application) {
FILE: wallet/src/de/schildbach/wallet/ui/send/SweepWalletActivity.java
class SweepWalletActivity (line 31) | public final class SweepWalletActivity extends AbstractWalletActivity {
method start (line 34) | public static void start(final Context context) {
method start (line 38) | public static void start(final Context context, final PrefixedChecksum...
method onCreate (line 46) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/send/SweepWalletFragment.java
class SweepWalletFragment (line 99) | public class SweepWalletFragment extends Fragment {
method onAttach (line 130) | @Override
method onCreate (line 138) | @Override
method onCreateView (line 209) | @Override
method onDestroy (line 244) | @Override
method onActivityResult (line 250) | @Override
method onCreateOptionsMenu (line 284) | @Override
method onOptionsItemSelected (line 298) | @Override
method handleReload (line 311) | private void handleReload() {
method maybeDecodeKey (line 319) | private void maybeDecodeKey() {
method askConfirmSweep (line 362) | private void askConfirmSweep(final ECKey key) {
method requestWalletBalance (line 378) | private void requestWalletBalance() {
method setState (line 447) | private void setState(final SweepWalletViewModel.State state) {
method updateView (line 453) | private void updateView() {
method handleDecrypt (line 526) | private void handleDecrypt() {
method handleSweep (line 530) | private void handleSweep() {
class FakeTransaction (line 586) | private static class FakeTransaction extends Transaction {
method FakeTransaction (line 589) | public FakeTransaction(final NetworkParameters params, final Sha256H...
method getTxId (line 595) | @Override
method getWTxId (line 600) | @Override
FILE: wallet/src/de/schildbach/wallet/ui/send/SweepWalletViewModel.java
class SweepWalletViewModel (line 33) | public class SweepWalletViewModel extends AndroidViewModel {
type State (line 34) | public enum State {
method SweepWalletViewModel (line 51) | public SweepWalletViewModel(final Application application) {
method getDynamicFees (line 57) | public DynamicFeeLiveData getDynamicFees() {
FILE: wallet/src/de/schildbach/wallet/util/Assets.java
class Assets (line 28) | public class Assets {
method open (line 29) | public static InputStream open(final AssetManager assets, final String...
FILE: wallet/src/de/schildbach/wallet/util/Base43.java
class Base43 (line 29) | public class Base43 {
method encode (line 39) | public static String encode(byte[] input) {
method decode (line 75) | public static byte[] decode(final String input) throws IllegalArgument...
method divmod43 (line 123) | private static byte divmod43(final byte[] number, final int startAt) {
method divmod256 (line 140) | private static byte divmod256(final byte[] number43, final int startAt) {
method copyOfRange (line 154) | private static byte[] copyOfRange(final byte[] source, final int from,...
FILE: wallet/src/de/schildbach/wallet/util/Bluetooth.java
class Bluetooth (line 35) | public class Bluetooth {
method getAddress (line 51) | public static @Nullable String getAddress(final BluetoothAdapter adapt...
method compressMac (line 75) | public static String compressMac(final String decompressedMac) throws ...
method decompressMac (line 90) | public static String decompressMac(final String compressedMac) throws ...
method isBluetoothUrl (line 105) | public static boolean isBluetoothUrl(final String url) {
method getBluetoothMac (line 109) | public static String getBluetoothMac(final String url) {
method getBluetoothQuery (line 120) | public static String getBluetoothQuery(final String url) {
FILE: wallet/src/de/schildbach/wallet/util/CheatSheet.java
class CheatSheet (line 36) | public class CheatSheet {
method setup (line 52) | public static void setup(View view) {
method setup (line 66) | public static void setup(View view, final int textResId) {
method setup (line 80) | public static void setup(View view, final CharSequence text) {
method remove (line 91) | public static void remove(final View view) {
method showCheatSheet (line 98) | private static boolean showCheatSheet(View view, CharSequence text) {
FILE: wallet/src/de/schildbach/wallet/util/CrashReporter.java
class CrashReporter (line 41) | public class CrashReporter {
method init (line 52) | public static void init(final File cacheDir) {
method collectSavedBackgroundTraces (line 59) | public static boolean collectSavedBackgroundTraces(final File file) {
method hasSavedCrashTrace (line 63) | public static boolean hasSavedCrashTrace() {
method appendSavedCrashTrace (line 67) | public static void appendSavedCrashTrace(final Appendable report) thro...
method deleteSaveCrashTrace (line 78) | public static boolean deleteSaveCrashTrace() {
method copy (line 82) | private static void copy(final BufferedReader in, final Appendable out...
method saveBackgroundTrace (line 92) | public static void saveBackgroundTrace(final Throwable throwable, fina...
method appendTrace (line 106) | private static void appendTrace(final PrintWriter writer, final Throwa...
class ExceptionHandler (line 118) | private static class ExceptionHandler implements Thread.UncaughtExcept...
method ExceptionHandler (line 121) | public ExceptionHandler(final Thread.UncaughtExceptionHandler previo...
method uncaughtException (line 125) | @Override
method saveCrashTrace (line 132) | private void saveCrashTrace(final Throwable throwable) {
FILE: wallet/src/de/schildbach/wallet/util/Crypto.java
class Crypto (line 54) | public class Crypto {
method getAESPasswordKey (line 108) | private static CipherParameters getAESPasswordKey(final char[] passwor...
method encrypt (line 124) | public static String encrypt(final String plainText, final char[] pass...
method encrypt (line 140) | public static String encrypt(final byte[] plainTextAsBytes, final char...
method encryptRaw (line 159) | private static byte[] encryptRaw(final byte[] plainTextAsBytes, final ...
method decrypt (line 191) | public static String decrypt(final String textToDecode, final char[] p...
method decryptBytes (line 207) | public static byte[] decryptBytes(final String textToDecode, final cha...
method decryptRaw (line 238) | private static byte[] decryptRaw(final byte[] bytesToDecode, final cha...
method concat (line 267) | private static byte[] concat(final byte[] arrayA, final byte[] arrayB) {
method accept (line 278) | @Override
FILE: wallet/src/de/schildbach/wallet/util/FillGapsLinearLayout.java
class FillGapsLinearLayout (line 33) | public class FillGapsLinearLayout extends LinearLayout {
method FillGapsLinearLayout (line 34) | public FillGapsLinearLayout(final Context context) {
method FillGapsLinearLayout (line 38) | public FillGapsLinearLayout(final Context context, @Nullable final Att...
method FillGapsLinearLayout (line 42) | public FillGapsLinearLayout(final Context context, @Nullable final Att...
method onMeasure (line 46) | @Override
FILE: wallet/src/de/schildbach/wallet/util/Formats.java
class Formats (line 29) | public final class Formats {
method sanitizeMemo (line 43) | @Nullable
FILE: wallet/src/de/schildbach/wallet/util/GenericUtils.java
class GenericUtils (line 25) | public class GenericUtils {
method startsWithIgnoreCase (line 26) | public static boolean startsWithIgnoreCase(final String string, final ...
method currencySymbol (line 30) | public static String currencySymbol(final String currencyCode) {
FILE: wallet/src/de/schildbach/wallet/util/Installer.java
type Installer (line 28) | public enum Installer {
method Installer (line 33) | Installer(final String displayName) {
method installerPackageName (line 37) | public static String installerPackageName(final Context context) {
method from (line 42) | public static Installer from(final String installerPackageName) {
method from (line 55) | public static Installer from(final Context context) {
method appStorePageFor (line 59) | public HttpUrl appStorePageFor(final Application application) {
FILE: wallet/src/de/schildbach/wallet/util/Iso8601Format.java
class Iso8601Format (line 32) | @SuppressLint("SimpleDateFormat")
method Iso8601Format (line 36) | public Iso8601Format(final String formatString) {
method newTimeFormat (line 41) | public static DateFormat newTimeFormat() {
method newDateFormat (line 45) | public static DateFormat newDateFormat() {
method newDateTimeFormat (line 49) | public static DateFormat newDateTimeFormat() {
method formatDateTime (line 53) | public static String formatDateTime(final Date date) {
method parseDateTime (line 57) | public static Date parseDateTime(final String source) throws ParseExce...
method newDateTimeFormatT (line 61) | public static DateFormat newDateTimeFormatT() {
method formatDateTimeT (line 65) | public static String formatDateTimeT(final Date date) {
method parseDateTimeT (line 69) | public static Date parseDateTimeT(final String source) throws ParseExc...
FILE: wallet/src/de/schildbach/wallet/util/MonetarySpannable.java
class MonetarySpannable (line 37) | public final class MonetarySpannable extends SpannableString {
method MonetarySpannable (line 38) | public MonetarySpannable(@Nullable final MonetaryFormat format, final ...
method MonetarySpannable (line 43) | public MonetarySpannable(@Nullable final MonetaryFormat format, @Nulla...
method format (line 47) | private static CharSequence format(@Nullable final MonetaryFormat form...
method applyMarkup (line 63) | public MonetarySpannable applyMarkup(@Nullable final Object[] prefixSp...
method applyMarkup (line 75) | public static void applyMarkup(final Spannable spannable, @Nullable fi...
FILE: wallet/src/de/schildbach/wallet/util/Nfc.java
class Nfc (line 30) | public class Nfc {
method createMime (line 31) | public static NdefRecord createMime(final String mimeType, final byte[...
method extractMimePayload (line 36) | @Nullable
FILE: wallet/src/de/schildbach/wallet/util/OnFirstPreDraw.java
class OnFirstPreDraw (line 32) | public class OnFirstPreDraw implements ViewTreeObserver.OnPreDrawListener {
type Callback (line 33) | public interface Callback {
method onFirstPreDraw (line 34) | boolean onFirstPreDraw();
method listen (line 37) | public static void listen(final View view, final Callback callback) {
method OnFirstPreDraw (line 47) | private OnFirstPreDraw(final ViewTreeObserver viewTreeObserver, final ...
method onPreDraw (line 53) | @Override
FILE: wallet/src/de/schildbach/wallet/util/Qr.java
class Qr (line 42) | public class Qr {
method bitmap (line 47) | public static Bitmap bitmap(final String content) {
method encodeCompressBinary (line 74) | public static String encodeCompressBinary(final byte[] bytes) {
method encodeBinary (line 94) | public static String encodeBinary(final byte[] bytes) {
method decodeDecompressBinary (line 98) | public static byte[] decodeDecompressBinary(final String content) thro...
method decodeBinary (line 117) | public static byte[] decodeBinary(final String content) throws IOExcep...
FILE: wallet/src/de/schildbach/wallet/util/Toast.java
class Toast (line 27) | public class Toast {
method Toast (line 31) | public Toast(final Context context) {
method postToast (line 35) | public final void postToast(final int textResId, final Object... forma...
method toast (line 39) | public final void toast(final int textResId, final Object... formatArg...
method postToast (line 43) | public final void postToast(final CharSequence text) {
method toast (line 47) | public final void toast(final CharSequence text) {
method postLongToast (line 51) | public final void postLongToast(final int textResId, final Object... f...
method longToast (line 55) | public final void longToast(final int textResId, final Object... forma...
method postLongToast (line 59) | public final void postLongToast(final CharSequence text) {
method longToast (line 63) | public final void longToast(final CharSequence text) {
method customToast (line 67) | private void customToast(final int textResId, final int duration, fina...
method customToast (line 71) | private void customToast(final CharSequence text, final int duration) {
FILE: wallet/src/de/schildbach/wallet/util/ViewPagerTabs.java
class ViewPagerTabs (line 39) | public class ViewPagerTabs extends View {
type Mode (line 40) | public enum Mode { DYNAMIC, STATIC }
method ViewPagerTabs (line 55) | public ViewPagerTabs(final Context context, final AttributeSet attrs) {
method setMode (line 68) | public void setMode(final Mode mode) {
method addTabLabels (line 73) | public void addTabLabels(final int... labelResId) {
method onDraw (line 92) | @Override
method drawDynamic (line 101) | private void drawDynamic(final Canvas canvas) {
method drawStatic (line 145) | private void drawStatic(final Canvas canvas) {
method onMeasure (line 156) | @Override
method getSuggestedMinimumHeight (line 183) | @Override
method onPageScrolled (line 191) | @Override
method onPageSelected (line 197) | @Override
method getPageChangeCallback (line 204) | public ViewPager2.OnPageChangeCallback getPageChangeCallback() {
method onSaveInstanceState (line 208) | @Override
method onRestoreInstanceState (line 217) | @Override
FILE: wallet/src/de/schildbach/wallet/util/WalletUtils.java
class WalletUtils (line 53) | public class WalletUtils {
method formatAddress (line 56) | public static Spanned formatAddress(final Address address, final int g...
method formatAddress (line 60) | public static Spanned formatAddress(@Nullable final String prefix, fin...
method formatHash (line 65) | public static Spanned formatHash(final String hash, final int groupSiz...
method longHash (line 69) | public static long longHash(final Sha256Hash hash) {
class MonospaceSpan (line 77) | private static class MonospaceSpan extends TypefaceSpan {
method MonospaceSpan (line 78) | public MonospaceSpan() {
method equals (line 83) | @Override
method hashCode (line 92) | @Override
method formatHash (line 98) | public static Spanned formatHash(@Nullable final String prefix, final ...
method getToAddressOfSent (line 120) | @Nullable
method getWalletAddressOfReceived (line 136) | @Nullable
method isEntirelySelf (line 152) | public static boolean isEntirelySelf(final Transaction tx, final Walle...
method autoBackupWallet (line 167) | public static void autoBackupWallet(final Context context, final Walle...
method restoreWalletFromAutoBackup (line 188) | public static Wallet restoreWalletFromAutoBackup(final Context context) {
method restoreWalletFromProtobuf (line 202) | public static Wallet restoreWalletFromProtobuf(final InputStream is,
method isPayToManyTransaction (line 218) | public static boolean isPayToManyTransaction(final Transaction transac...
method uriToProvider (line 222) | public static @Nullable String uriToProvider(final Uri uri) {
FILE: wallet/src/de/schildbach/wallet/util/WholeStringBuilder.java
class WholeStringBuilder (line 27) | public class WholeStringBuilder extends SpannableStringBuilder {
method bold (line 28) | public static CharSequence bold(final CharSequence text) {
method WholeStringBuilder (line 32) | public WholeStringBuilder(final CharSequence text, final Object span) {
FILE: wallet/src/de/schildbach/wallet/util/ZoomOutPageTransformer.java
class ZoomOutPageTransformer (line 26) | public final class ZoomOutPageTransformer implements ViewPager2.PageTran...
method transformPage (line 30) | public void transformPage(final View view, final float position) {
FILE: wallet/test/de/schildbach/wallet/exchangerate/CoinGeckoTest.java
class CoinGeckoTest (line 32) | public class CoinGeckoTest {
method parse (line 35) | @Test
FILE: wallet/test/de/schildbach/wallet/util/Base43Test.java
class Base43Test (line 28) | public class Base43Test {
method encode (line 29) | @Test
method decode (line 40) | @Test
FILE: wallet/test/de/schildbach/wallet/util/BluetoothTest.java
class BluetoothTest (line 28) | public class BluetoothTest {
method compressMac (line 29) | @Test
method compressMac_oversizedSegment (line 37) | @Test(expected = IllegalArgumentException.class)
method compressMac_illegalCharacter (line 42) | @Test(expected = IllegalArgumentException.class)
method decompressMac (line 47) | @Test
method decompressMac_impossibleLength (line 55) | @Test(expected = IllegalArgumentException.class)
method decompressMac_illegalCharacter (line 60) | @Test(expected = IllegalArgumentException.class)
method compressDecompressMac (line 65) | @Test
method isBluetoothUri (line 71) | @Test
method getBluetooth (line 77) | @Test
FILE: wallet/test/de/schildbach/wallet/util/CryptoTest.java
class CryptoTest (line 38) | public class CryptoTest {
method roundtripText (line 43) | @Test
method roundtripDifferentTextSizes (line 49) | @Test
method roundtripBytes (line 61) | @Test
method roundtripDifferentByteSizes (line 67) | @Test
method roundtripDifferentPasswordSizes (line 79) | @Test
method backups (line 91) | @Test
method readBackupFromResource (line 102) | private String readBackupFromResource(final String filename) throws IO...
FILE: wallet/test/de/schildbach/wallet/util/FormatsTest.java
class FormatsTest (line 33) | public class FormatsTest {
method monetarySpannable (line 34) | @Test
FILE: wallet/test/de/schildbach/wallet/util/WalletUtilsTest.java
class WalletUtilsTest (line 29) | public class WalletUtilsTest {
method restoreWalletFromProtobufOrBase58 (line 30) | @Test
method restoreWalletFromProtobuf_wrongNetwork (line 36) | @Test(expected = IOException.class)
Condensed preview — 499 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,787K chars).
[
{
"path": ".github/CONTRIBUTING.md",
"chars": 484,
"preview": "# Contributing Guidelines\n\nWe love pull requests from everyone! Bug reports are also welcome.\n\nHowever if you've got a q"
},
{
"path": ".gitignore",
"chars": 99,
"preview": ".gradle/\nbuild/\nlocal.properties\n.classpath\n.project\n.settings/\n.idea/\n*.iml\nbin/\ngen/\nwallet/.cxx\n"
},
{
"path": ".tx/config",
"chars": 920,
"preview": "[main]\nhost = https://www.transifex.com\n\n[bitcoin-wallet.strings]\ntype = ANDROID\nsource_file = wallet/res/values/strings"
},
{
"path": "README.md",
"chars": 2055,
"preview": "# BITCOIN WALLET\n\nWelcome to _Bitcoin Wallet_, a standalone Bitcoin payment app for your Android device!\n\nThis project c"
},
{
"path": "build.gradle",
"chars": 474,
"preview": "buildscript {\n repositories {\n jcenter()\n google()\n }\n\n dependencies {\n classpath 'com.and"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 800,
"preview": "## For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/buil"
},
{
"path": "gradlew",
"chars": 5296,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "gradlew.bat",
"chars": 2176,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem "
},
{
"path": "integration-android/AUTHORS",
"chars": 43,
"preview": "Andreas Schildbach <andreas@schildbach.de>\n"
},
{
"path": "integration-android/COPYING",
"chars": 10174,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "integration-android/build.gradle",
"chars": 342,
"preview": "plugins {\n id 'java'\n}\n\ndependencies {\n compile('com.google.android:android:4.0.1.2') {\n transitive false\n "
},
{
"path": "integration-android/src/de/schildbach/wallet/integration/android/BitcoinIntegration.java",
"chars": 10689,
"preview": "/*\n * Copyright the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n *"
},
{
"path": "market/market-description-ar.txt",
"chars": 1108,
"preview": "<b>إمتلك البت كوينز الخاصة بك, دائماً في جيبك!</b> تدفع بسرعة بمجرد مسح رمز الـ QR. و كتاجر، يمكنك قبض مبالغ خدماتك حالا"
},
{
"path": "market/market-description-ca.txt",
"chars": 1274,
"preview": "<b>Tingues els teus Bitcoins sempre amb tu, a la teva butxaca!.<b> Per pagar ràpidament escanejant un codi QR. Com a com"
},
{
"path": "market/market-description-cs.txt",
"chars": 1220,
"preview": "<b>Mějte své Bitcoiny vždy s sebou ve své kapse!</b> Plaťte rychlým oskenováním QR kódu. A jako prodejce můžete přijímat"
},
{
"path": "market/market-description-cy.txt",
"chars": 1192,
"preview": "<b>Cluda dy Fitcoin yn dy boced!</b>Gellir talu'n gyflym gan sganio cod QR. Fel masnachwr, gellir derbyn taliadau yn syt"
},
{
"path": "market/market-description-da.txt",
"chars": 1234,
"preview": "<b>Hav altid dine Bitcoins med dig i din lomme!</b> Du betaler ved hurtigt at scanne en QR-kode. Som handlende kan du mo"
},
{
"path": "market/market-description-de.txt",
"chars": 1286,
"preview": "<b>Hab deine Bitcoins immer dabei, in deiner Hosentasche!</b> Du zahlst, indem du rasch einen QR-Code scannst. Als Händl"
},
{
"path": "market/market-description-el.txt",
"chars": 1217,
"preview": "<b>Τα Bitcoins πάντα μαζί σας, στην τσέπη σας!</b>Πληρώστε σαρώνοντας γρήγορα ένα QR code. Ως έμπορος, λαμβάνετε πληρωμέ"
},
{
"path": "market/market-description-eo.txt",
"chars": 847,
"preview": "Havu viajn Bitmonojn ĉiam kun vi, en via poŝo! Vi povas pagi per rapide skanado de QR-kodo. Kiel komercisto, vi povas ri"
},
{
"path": "market/market-description-es.txt",
"chars": 1352,
"preview": "<b>Ten tus Bitcoins siempre contigo, ¡en tu bolsillo!</b> Paga rápidamente leyendo el código QR. Como comercio puedes re"
},
{
"path": "market/market-description-fa.txt",
"chars": 1318,
"preview": "بیتکوینهای تان را همیشه با خود در کیف پولتان داشته باشید. به سرعت با اسکن کردن QR-code پرداخت کنید. به عنوان فروشنده، "
},
{
"path": "market/market-description-fi.txt",
"chars": 1251,
"preview": "<b>Pidä Bitcoinisi aina mukana taskussasi!</b> Voit maksaa nopeasti skannaamalla QR-koodin. Kauppiaana saat maksut turva"
},
{
"path": "market/market-description-fr.txt",
"chars": 1379,
"preview": "<b>Ayez vos bitcoins toujours avec vous dans votre poche !</b> Payez rapidement en balayant un code QR. En tant que marc"
},
{
"path": "market/market-description-he.txt",
"chars": 828,
"preview": "שא את הביטקוין שלך עליך ללא תלות בשרות חיצוני, העבר או קבל כסף בקלות על ידי ברקוד, הכנסת כתובת או תקשורת מגע (NFC). כסוח"
},
{
"path": "market/market-description-hi.txt",
"chars": 1022,
"preview": "अपनी जेब में, हमेशा के लिए अपने बिटकोइंस रखे ! आप QR-कोड स्कैन करके जल्दी से भुगतान कर सकते हैं एक व्यापारी के रूप में,"
},
{
"path": "market/market-description-hr.txt",
"chars": 1048,
"preview": "<b>Imaj svoje Bitcoin-e uvijek sa sobom, u svom džepu.</b> Plaćaj brzim skeniranjem QR koda. Kao trgovac, primaj uplate "
},
{
"path": "market/market-description-hu.txt",
"chars": 1163,
"preview": "<b>Mindig legyenek nálad a Bitcoin-jaid a zsebedben!</b> Úgy tudsz fizetni, hogy gyorsan beolvasol egy QR kódot. Kereske"
},
{
"path": "market/market-description-id.txt",
"chars": 898,
"preview": "Dengan aplikasi ini Anda selalu mempunyai Bitcoin dengan Anda, dalam saku Anda! Anda dapat mengirim pembayaran hanya den"
},
{
"path": "market/market-description-it.txt",
"chars": 1174,
"preview": "<b>Porta i tuoi Bitcoin sempre con te, in tasca!</b> Paghi velocemente scansionando un QR-code. Come un commerciante, r"
},
{
"path": "market/market-description-iw.txt",
"chars": 779,
"preview": "שא את הביטקוין שלך עליך ללא תלות בשרות חיצוני, העבר או קבל כסף בקלות על ידי ברקוד, הכנסת כתובת או תקשורת מגע (NFC). כסוח"
},
{
"path": "market/market-description-ja.txt",
"chars": 760,
"preview": "<b>ビットコインを持ち歩こう、いつでもあなたのポケットに!</b> QRコードスキャンで素早く支払えます。販売者としても、即座にかつ確実に支払いを受取れます。 Bitcoin Walletは初めてのモバイルビットコインアプリであり、そして"
},
{
"path": "market/market-description-ko.txt",
"chars": 748,
"preview": "<b>주머니에 항상 넣어다닐 수 있는 비트코인 지갑!</b> QR 코드를 통해 빠르게 비트코인 결제가 가능합니다. 판매자의 경우 안전하고 빠르게 대금을 받을 수 있습니다. 비트코인 지갑(Bitcoin Wallet)은"
},
{
"path": "market/market-description-mk.txt",
"chars": 894,
"preview": "Имај ги твоите Биткоини секогаш со тебе, во твојот џеб! Плаќањето се одвива со брзо скенирање на QR код. Како трговец, м"
},
{
"path": "market/market-description-nb.txt",
"chars": 1083,
"preview": "<b>Ha alltid dine bitcoins med deg, i lommen din!</b> Du betaler ved å raskt skanne en QR-kode. Som en kjøpmann, får du "
},
{
"path": "market/market-description-nl.txt",
"chars": 1201,
"preview": "<b>Draag je Bitcoins altijd bij je, in je broekzak!</b> Je kunt vlot betalen door een QR-code te scannen. Als winkelier "
},
{
"path": "market/market-description-pl.txt",
"chars": 1171,
"preview": "<b>Miej swoje Bitcoiny zawsze przy sobie, w Twojej kieszeni!<b> Możesz płacić przez szybkie zeskanowanie QR kodu. Jako s"
},
{
"path": "market/market-description-pt-BR.txt",
"chars": 1243,
"preview": "<b>Tenha os seus Bitcoins sempre com você, no seu bolso!</b> Efetue pagamentos rapidamente apenas escaneando um código Q"
},
{
"path": "market/market-description-pt-PT.txt",
"chars": 1201,
"preview": "<b>Tenha as suas Bitcoins sempre consigo, no seu bolso! Você paga digitalizando rapidamente um código QR. Como um comerc"
},
{
"path": "market/market-description-ru.txt",
"chars": 1305,
"preview": "<b>Всегда носите ваши биткоины с собой в вашем кармане!</b> Оплачивайте простым сканированием QR кода. Это надежный и бы"
},
{
"path": "market/market-description-sk.txt",
"chars": 835,
"preview": "Bitcoiny vždy so sebou vo svojom vrecku. Jednoduché a rýchle platby pomocou QR kódov. Pre obchodníkov ponúka spoľahlivé "
},
{
"path": "market/market-description-sl.txt",
"chars": 870,
"preview": "Nosite svoje novce vedno s seboj v žepu. Plačila so hitra, le prečitate QR-kodo. Tudi prejemanje plačil je zanesljivo in"
},
{
"path": "market/market-description-sq.txt",
"chars": 1151,
"preview": "<>Mbani Bitcoin-at e juaj gjithmonë me ju, në xhepin tuaj!</b> Paguani shpejt duke skanuar një QR kod. Si tregtar, prano"
},
{
"path": "market/market-description-sv.txt",
"chars": 1094,
"preview": "<b>Ha alltid dina bitcoin med dig i fickan!</b> Du betalar snabbt genom att skanna en QR-kod. Handlare får betalningar t"
},
{
"path": "market/market-description-tr.txt",
"chars": 1172,
"preview": "<b>Bitcoin'leriniz daima cebinizde sizinle olsun!</b> Herhangi bir QR kodunu okutarak çabuk ödeme yapabilirsiniz. Bir tü"
},
{
"path": "market/market-description-uk.txt",
"chars": 1080,
"preview": "<b>Носіть Bitcoin завжди з собою, в кишені!</b> Оплачуйте швидко, скануючи QR-код. Якщо ви продавець, отримуйте оплату ш"
},
{
"path": "market/market-description-vi.txt",
"chars": 1142,
"preview": "Với ứng dụng này thì các Bitcoin sẽ luôn trong tầm kiểm soát của riêng bạn! Bạn có thể gửi các khoản chi trả thông qua t"
},
{
"path": "market/market-description-zh-TW.txt",
"chars": 634,
"preview": "<b>隨身攜帶你的 Bitcoin,就在你的口袋中!<b>你可以掃描 QR 條碼快速付款。商家也可以安全又快速的完成請款。Bitcoin Wallet 是第一個可以在行動設備使用的 Bitcoin app,並自認為是最安全的一個!\n\n\n<b"
},
{
"path": "market/market-description-zh.txt",
"chars": 671,
"preview": "<b>将比特币随身携带在你自己的口袋中!</b> 扫描二维码快速支付,即时可靠的接收付款。比特币钱包 (Bitcoin Wallet) 是首选的、最安全的比特币应用!\n\n\n<b>功能</b>\n\n• 不需要注册,不需要网络服务,也不需要云!比"
},
{
"path": "market/market-description.txt",
"chars": 1191,
"preview": "<b>Have your Bitcoins always with you, in your pocket!</b> You pay by quickly scanning a QR code. As a merchant, you rec"
},
{
"path": "market/market-promo-text-ar.txt",
"chars": 30,
"preview": "البتكوين الخاصة بك، في جيبك !\n"
},
{
"path": "market/market-promo-text-ca.txt",
"chars": 38,
"preview": "Els teus Bitcoins, a la teva butxaca!\n"
},
{
"path": "market/market-promo-text-cs.txt",
"chars": 35,
"preview": "Vlastní Bitcoiny ve vlastní kapse!\n"
},
{
"path": "market/market-promo-text-cy.txt",
"chars": 38,
"preview": "Dy Fitcoin dy hun, yn dy boced dy hun!"
},
{
"path": "market/market-promo-text-da.txt",
"chars": 37,
"preview": "Dine egne Bitcoins i din egen lomme!\n"
},
{
"path": "market/market-promo-text-de.txt",
"chars": 50,
"preview": "Deine eigenen Bitcoins, in deiner eigenen Tasche!\n"
},
{
"path": "market/market-promo-text-el.txt",
"chars": 37,
"preview": "Τα δικά σας Bitcoin, στην τσέπη σας!\n"
},
{
"path": "market/market-promo-text-eo.txt",
"chars": 43,
"preview": "Viaj propraj Bitmonoj, en via propra poŝo!\n"
},
{
"path": "market/market-promo-text-es.txt",
"chars": 46,
"preview": "¡Tus propios Bitcoins, en tu propio bolsillo!\n"
},
{
"path": "market/market-promo-text-fa.txt",
"chars": 37,
"preview": "بیت کوین های شما، در کیف پول خودتان!\n"
},
{
"path": "market/market-promo-text-fi.txt",
"chars": 35,
"preview": "Pidä Bitcoinisi omassa taskussasi!\n"
},
{
"path": "market/market-promo-text-fr.txt",
"chars": 33,
"preview": "Vos bitcoins, dans votre poche !\n"
},
{
"path": "market/market-promo-text-he.txt",
"chars": 26,
"preview": "הביטקוינים שלך, בכיס שלך!\n"
},
{
"path": "market/market-promo-text-hi.txt",
"chars": 43,
"preview": "आपके अपने बिटकोइंस , आपकी अपनी पॉकेट में !\n"
},
{
"path": "market/market-promo-text-hr.txt",
"chars": 43,
"preview": "Tvoji vlastiti Bitcoin-ovi, u tvome džepu!\n"
},
{
"path": "market/market-promo-text-hu.txt",
"chars": 37,
"preview": "Tartsd a zsebedben Bitcoin érméidet!\n"
},
{
"path": "market/market-promo-text-id.txt",
"chars": 48,
"preview": "Anda memiliki Bitcoin, dalam saku Anda sendiri!\n"
},
{
"path": "market/market-promo-text-it.txt",
"chars": 33,
"preview": "I tuoi Bitcoin, nella tua tasca!\n"
},
{
"path": "market/market-promo-text-iw.txt",
"chars": 26,
"preview": "הביטקוינים שלך, בכיס שלך!\n"
},
{
"path": "market/market-promo-text-ja.txt",
"chars": 19,
"preview": "君のビットコインを、君のポケットに!\n"
},
{
"path": "market/market-promo-text-ko.txt",
"chars": 15,
"preview": "내 주머니, 내 비트코인!\n"
},
{
"path": "market/market-promo-text-mk.txt",
"chars": 47,
"preview": "Твоите лични Биткоини, во твојот сопствен џеб!\n"
},
{
"path": "market/market-promo-text-nb.txt",
"chars": 38,
"preview": "Dine egne bitcoins, i din egen lomme!\n"
},
{
"path": "market/market-promo-text-nl.txt",
"chars": 36,
"preview": "Je eigen bitcoins, in je eigen zak!\n"
},
{
"path": "market/market-promo-text-pl.txt",
"chars": 32,
"preview": "Twoje Bitcoiny w Twojej kieszen!"
},
{
"path": "market/market-promo-text-pt-BR.txt",
"chars": 28,
"preview": "Seus Bitcoins em seu bolso!\n"
},
{
"path": "market/market-promo-text-pt-PT.txt",
"chars": 48,
"preview": "As suas próprias Bitcoins, estão sempre consigo!"
},
{
"path": "market/market-promo-text-ru.txt",
"chars": 55,
"preview": "Ваши собственные биткоины в вашем собственном кармане!\n"
},
{
"path": "market/market-promo-text-sk.txt",
"chars": 50,
"preview": "Tvoje vlastné Bitcoiny, v Tvojom vlastnom vrecku!\n"
},
{
"path": "market/market-promo-text-sl.txt",
"chars": 25,
"preview": "Vaši novci v vašem žepu!\n"
},
{
"path": "market/market-promo-text-sq.txt",
"chars": 40,
"preview": "Bitcoin-monedhat tuaja, në xhepin tuaj!\n"
},
{
"path": "market/market-promo-text-sv.txt",
"chars": 37,
"preview": "Dina egna bitcoin, i din egen ficka!\n"
},
{
"path": "market/market-promo-text-tr.txt",
"chars": 39,
"preview": "Kendi Bitcoinleriniz, kendi cebinizde!\n"
},
{
"path": "market/market-promo-text-uk.txt",
"chars": 38,
"preview": "Ваші Bitcoin, у вашій власній кишені!\n"
},
{
"path": "market/market-promo-text-vi.txt",
"chars": 53,
"preview": "Bitcoin của riêng bạn, trong túi tiền của riêng bạn!\n"
},
{
"path": "market/market-promo-text-zh-TW.txt",
"chars": 21,
"preview": "你的 Bitcoin 就在自己的口袋裡!\n"
},
{
"path": "market/market-promo-text-zh.txt",
"chars": 17,
"preview": "将您自己的比特币装进您自己的口袋!"
},
{
"path": "market/market-promo-text.txt",
"chars": 39,
"preview": "Your own Bitcoins, in your own pocket!\n"
},
{
"path": "sample-integration-android/AUTHORS",
"chars": 43,
"preview": "Andreas Schildbach <andreas@schildbach.de>\n"
},
{
"path": "sample-integration-android/AndroidManifest.xml",
"chars": 1022,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n pack"
},
{
"path": "sample-integration-android/COPYING",
"chars": 10174,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "sample-integration-android/build.gradle",
"chars": 1182,
"preview": "plugins {\n id 'com.android.application'\n}\n\nconfigurations {\n all*.exclude group: 'com.google.android', module: 'an"
},
{
"path": "sample-integration-android/res/layout/sample_activity.xml",
"chars": 3521,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "sample-integration-android/src/de/schildbach/wallet/integration/sample/SampleActivity.java",
"chars": 5893,
"preview": "/*\n * Copyright the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n *"
},
{
"path": "settings.gradle",
"chars": 393,
"preview": "import org.gradle.util.GradleVersion\nimport org.gradle.api.GradleScriptException\n\n// required Gradle version\ndef minGrad"
},
{
"path": "wallet/AUTHORS",
"chars": 900,
"preview": "Coding, Graphics:\nAndreas Schildbach <andreas@schildbach.de>\n\nLocalizations:\nRussian: Artem Grunichev <gluk@umbrosia.ru>"
},
{
"path": "wallet/AndroidManifest.xml",
"chars": 10341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmln"
},
{
"path": "wallet/CHANGES",
"chars": 29531,
"preview": "v8.08\n\n* Update translations from Transifex.\n* Based on bitcoinj 0.15.9.\n\nv8.04-v8.07\n\n* Trusted peers with custom TCP p"
},
{
"path": "wallet/COPYING",
"chars": 32473,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "wallet/README.md",
"chars": 6545,
"preview": "Technical details\n=================\n\n### FILES\n\nYour wallet contains your private keys and various transaction related m"
},
{
"path": "wallet/README.recover.md",
"chars": 7903,
"preview": "Recovering Bitcoins\n===================\n\n## PROLOGUE\n\nThis document describes how you can use a backup file on a standar"
},
{
"path": "wallet/README.specs.md",
"chars": 3676,
"preview": "SUPPORTED SPECIFICATIONS\n========================\n\n* [BIP-13](https://github.com/bitcoin/bips/blob/master/bip-0013.media"
},
{
"path": "wallet/assets/bip39-wordlist.txt",
"chars": 13116,
"preview": "abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacousti"
},
{
"path": "wallet/assets/checkpoints.txt",
"chars": 0,
"preview": ""
},
{
"path": "wallet/assets/electrum-servers.txt",
"chars": 0,
"preview": ""
},
{
"path": "wallet/assets/fees.txt",
"chars": 105,
"preview": "# fee rates in satoshis per 1000 bytes of tx data\nECONOMIC=100000000\nNORMAL=100000000\nPRIORITY=100000000\n"
},
{
"path": "wallet/assets-prod/checkpoints.txt",
"chars": 1927931,
"preview": "TXT CHECKPOINTS 1\n0\n14945\nAAAAAAAAAAAPEA8BAAAA8AEAAABOWiJ9ftc1GHwmHUCtY5f8arBYqAU09ExIxA8xFjRT+d0EzqgGKXUhLE4qcCUigvO9LL"
},
{
"path": "wallet/assets-prod/electrum-servers.txt",
"chars": 0,
"preview": ""
},
{
"path": "wallet/assets-prod/fees.txt",
"chars": 105,
"preview": "# fee rates in satoshis per 1000 bytes of tx data\nECONOMIC=100000000\nNORMAL=100000000\nPRIORITY=100000000\n"
},
{
"path": "wallet/build.gradle",
"chars": 6814,
"preview": "import groovy.io.FileType\nimport groovy.xml.XmlUtil\n\nplugins {\n id 'com.android.application'\n id 'androidsvgdrawab"
},
{
"path": "wallet/cpp/CMakeLists.txt",
"chars": 213,
"preview": "cmake_minimum_required(VERSION 3.6.0)\nadd_library(scrypt SHARED scrypt_jni.c crypto_scrypt-nosse.c sha256.c)\nset_target_"
},
{
"path": "wallet/cpp/config.h",
"chars": 157,
"preview": "#define HAVE_DECL_BE64ENC 0\n#define HAVE_MMAP 1\n\n#ifndef __ANDROID__\n#define HAVE_POSIX_MEMALIGN 1\n#endif\n\n#ifdef __ANDR"
},
{
"path": "wallet/cpp/crypto_scrypt-nosse.c",
"chars": 8979,
"preview": "/*-\n * Copyright 2009 Colin Percival\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, wi"
},
{
"path": "wallet/cpp/crypto_scrypt.h",
"chars": 2082,
"preview": "/*-\n * Copyright 2009 Colin Percival\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, wi"
},
{
"path": "wallet/cpp/scrypt_jni.c",
"chars": 3486,
"preview": "// Copyright (C) 2011 - Will Glozer. All rights reserved.\n\n#include <errno.h>\n#include <stdlib.h>\n#include <inttypes.h>"
},
{
"path": "wallet/cpp/scrypt_platform.h",
"chars": 263,
"preview": "#ifndef _SCRYPT_PLATFORM_H_\n#define\t_SCRYPT_PLATFORM_H_\n\n#if defined(CONFIG_H_FILE)\n#include CONFIG_H_FILE\n#elif defined"
},
{
"path": "wallet/cpp/sha256.c",
"chars": 11115,
"preview": "/*-\n * Copyright 2005,2007,2009 Colin Percival\n * All rights reserved.\n *\n * Redistribution and use in source and binary"
},
{
"path": "wallet/cpp/sha256.h",
"chars": 2417,
"preview": "/*-\n * Copyright 2005,2007,2009 Colin Percival\n * All rights reserved.\n *\n * Redistribution and use in source and binary"
},
{
"path": "wallet/cpp/sysendian.h",
"chars": 3797,
"preview": "/*-\n * Copyright 2007-2009 Colin Percival\n * All rights reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "wallet/proguard.cfg",
"chars": 3359,
"preview": "-dontskipnonpubliclibraryclasses\n-dontoptimize\n-dontpreverify\n-dontobfuscate\n-verbose\n\n-keepclassmembers class * impleme"
},
{
"path": "wallet/res/anim/slide_in_bottom.xml",
"chars": 467,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:i"
},
{
"path": "wallet/res/anim/slide_in_left.xml",
"chars": 468,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:i"
},
{
"path": "wallet/res/anim/slide_in_right.xml",
"chars": 467,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:i"
},
{
"path": "wallet/res/anim/slide_in_top.xml",
"chars": 468,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:i"
},
{
"path": "wallet/res/anim/transaction_layout_anim.xml",
"chars": 168,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layoutAnimation\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/animator/fade_in_drawable.xml",
"chars": 365,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<objectAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/animator/fade_in_view.xml",
"chars": 365,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<objectAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/animator/fade_out_drawable.xml",
"chars": 364,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<objectAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/color/bg_list_card.xml",
"chars": 258,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <i"
},
{
"path": "wallet/res/color/bg_list_card_transaction.xml",
"chars": 248,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <i"
},
{
"path": "wallet/res/color/fg_on_dark_bg_network.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <i"
},
{
"path": "wallet/res/drawable/action_mode_background.xml",
"chars": 230,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <grad"
},
{
"path": "wallet/res/drawable/appwidget_background.xml",
"chars": 246,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android"
},
{
"path": "wallet/res/drawable/background_splash.xml",
"chars": 875,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/drawable/divider_currency.xml",
"chars": 262,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <size"
},
{
"path": "wallet/res/drawable/divider_dark.xml",
"chars": 234,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <size"
},
{
"path": "wallet/res/drawable/divider_field.xml",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <size"
},
{
"path": "wallet/res/drawable/floating_action_button_background.xml",
"chars": 284,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n "
},
{
"path": "wallet/res/drawable/shortcut_request_coins.xml",
"chars": 872,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xm"
},
{
"path": "wallet/res/drawable/shortcut_scan_qr.xml",
"chars": 872,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xm"
},
{
"path": "wallet/res/drawable/shortcut_send_coins.xml",
"chars": 864,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xm"
},
{
"path": "wallet/res/drawable/stat_notify_peers.xml",
"chars": 650,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<level-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n "
},
{
"path": "wallet/res/drawable/transactions_list_filter_received.xml",
"chars": 442,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n "
},
{
"path": "wallet/res/drawable/transactions_list_filter_sent.xml",
"chars": 442,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n "
},
{
"path": "wallet/res/drawable-anydpi/ic_clear_grey600_24dp.xml",
"chars": 420,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_content_copy_white_24dp.xml",
"chars": 482,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_create_white_24dp.xml",
"chars": 485,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_delete_white_24dp.xml",
"chars": 402,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_filter_list_white_24dp.xml",
"chars": 374,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_local_offer_white_24dp.xml",
"chars": 611,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_open_in_browser_white_24dp.xml",
"chars": 466,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_photo_camera_shortcut_24dp.xml",
"chars": 653,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_photo_camera_white_24dp.xml",
"chars": 635,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_qrcode_white_24dp.xml",
"chars": 548,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_refresh_white_24dp.xml",
"chars": 537,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_search_white_24dp.xml",
"chars": 567,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_send_flipped_shortcut_24dp.xml",
"chars": 461,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_send_flipped_white_24dp.xml",
"chars": 452,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_send_shortcut_24dp.xml",
"chars": 366,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_send_white_24dp.xml",
"chars": 357,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_share_white_24dp.xml",
"chars": 750,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_sync_white_24dp.xml",
"chars": 568,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/ic_warning_grey600_24dp.xml",
"chars": 372,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_0_peers_24dp.xml",
"chars": 492,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_1_peers_24dp.xml",
"chars": 580,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_2_peers_24dp.xml",
"chars": 580,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_3_peers_24dp.xml",
"chars": 580,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_4_peers_24dp.xml",
"chars": 492,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/drawable-anydpi/stat_notify_bluetooth_24dp.xml",
"chars": 475,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n androi"
},
{
"path": "wallet/res/layout/address_book_content.xml",
"chars": 787,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/address_book_row.xml",
"chars": 2952,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.cardview.widget.CardView\n xmlns:android=\"http://schemas.android.com/"
},
{
"path": "wallet/res/layout/backup_wallet_dialog.xml",
"chars": 4110,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/bitmap_dialog.xml",
"chars": 455,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ImageView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n and"
},
{
"path": "wallet/res/layout/block_list_fragment.xml",
"chars": 660,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ViewAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/block_row.xml",
"chars": 2573,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.cardview.widget.CardView\n xmlns:android=\"http://schemas.android.com/"
},
{
"path": "wallet/res/layout/block_row_transaction.xml",
"chars": 1341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/dialog_title.xml",
"chars": 1205,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/edit_address_book_entry_dialog.xml",
"chars": 2330,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/encrypt_keys_dialog.xml",
"chars": 4077,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/exchange_rate_row.xml",
"chars": 5019,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.cardview.widget.CardView\n xmlns:android=\"http://schemas.android.com/"
},
{
"path": "wallet/res/layout/exchange_rates_content.xml",
"chars": 342,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.fragment.app.FragmentContainerView\n xmlns:android=\"http://schemas.an"
},
{
"path": "wallet/res/layout/exchange_rates_fragment.xml",
"chars": 991,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ViewAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/extended_public_key_dialog.xml",
"chars": 859,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n a"
},
{
"path": "wallet/res/layout/maintenance_dialog.xml",
"chars": 2289,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/network_monitor_content.xml",
"chars": 793,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/peer_list_fragment.xml",
"chars": 944,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ViewAnimator\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/peer_list_row.xml",
"chars": 3772,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.cardview.widget.CardView\n xmlns:android=\"http://schemas.android.com/"
},
{
"path": "wallet/res/layout/raise_fee_dialog.xml",
"chars": 2281,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/report_issue_dialog.xml",
"chars": 2748,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/request_coins_content.xml",
"chars": 573,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/request_coins_form_include.xml",
"chars": 2630,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/request_coins_fragment.xml",
"chars": 2387,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/restore_wallet_dialog.xml",
"chars": 2669,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/row_separator.xml",
"chars": 587,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<TextView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "wallet/res/layout/scan_activity.xml",
"chars": 578,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<merge\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android"
},
{
"path": "wallet/res/layout/send_coins_address_row.xml",
"chars": 960,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/send_coins_buttons_include.xml",
"chars": 1180,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "wallet/res/layout/send_coins_content.xml",
"chars": 572,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ScrollView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n an"
},
{
"path": "wallet/res/layout/send_coins_fragment.xml",
"chars": 8582,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
}
]
// ... and 299 more files (download for full content)
About this extraction
This page contains the full source code of the langerhans/dogecoin-wallet-new GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 499 files (4.3 MB), approximately 1.2M tokens, and a symbol index with 1579 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.