Browse Source

JNI fix

gradlePlay
Gutyn 9 years ago
parent
commit
25b68ccbe3
  1. 2
      .idea/dynamic.xml
  2. 4
      .idea/libraries/hamcrest_integration_1_3.xml
  3. 4
      .idea/libraries/hamcrest_library_1_3.xml
  4. 4
      .idea/libraries/javawriter_2_1_1.xml
  5. 4
      .idea/libraries/javax_annotation_api_1_2.xml
  6. 28
      app/app.iml
  7. 35
      app/build.gradle
  8. 9
      app/src/main/java/com/breadwallet/presenter/activities/IntroActivity.java
  9. 10
      app/src/main/java/com/breadwallet/presenter/fragments/FragmentDecoder.java
  10. 1
      app/src/main/java/com/breadwallet/presenter/fragments/FragmentScanResult.java
  11. 3
      app/src/main/java/com/breadwallet/presenter/fragments/FragmentSettingsAll.java
  12. 42
      app/src/main/java/com/breadwallet/tools/AddressReader.java
  13. 4
      app/src/main/java/com/breadwallet/tools/adapter/ParallaxViewPager.java
  14. 19
      app/src/main/java/com/breadwallet/tools/animation/FragmentAnimator.java
  15. 7
      app/src/main/java/com/breadwallet/tools/animation/SpringAnimator.java
  16. 9
      app/src/main/jni/Android.mk
  17. 4
      app/src/main/jni/Application.mk
  18. 2
      app/src/main/jni/breadwallet-core
  19. 41
      app/src/main/jni/transition/core.c
  20. 4
      app/src/main/jni/transition/core.h
  21. 2
      app/src/main/jni/transition/testingStuff.c
  22. 4
      app/src/main/res/animator/from_bottom.xml
  23. 4
      app/src/main/res/animator/from_left.xml
  24. 4
      app/src/main/res/animator/from_right.xml
  25. 6
      app/src/main/res/animator/from_top.xml
  26. 4
      app/src/main/res/animator/to_bottom.xml
  27. 4
      app/src/main/res/animator/to_left.xml
  28. 4
      app/src/main/res/animator/to_right.xml
  29. 4
      app/src/main/res/animator/to_top.xml
  30. BIN
      app/src/main/res/drawable-hdpi/flash_off.png
  31. 0
      app/src/main/res/drawable-hdpi/flash_on.png
  32. 14
      app/src/main/res/layout-sw600dp/fragment_decoder.xml
  33. 2
      app/src/main/res/layout/fragment_decoder.xml
  34. 1
      app/src/main/res/values/integer.xml
  35. 2
      build.gradle
  36. 2
      gradle/wrapper/gradle-wrapper.properties

2
.idea/dynamic.xml

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4" />

4
.idea/libraries/hamcrest_integration_1_3.xml

@ -4,6 +4,8 @@
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/5de0c73fef18917cd85d0ab70bb23818685e4dfd/hamcrest-integration-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-integration/1.3/ae7787a563e6a1b1f17fd4ac43be3a3c8830cfda/hamcrest-integration-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

4
.idea/libraries/hamcrest_library_1_3.xml

@ -4,6 +4,8 @@
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

4
.idea/libraries/javawriter_2_1_1.xml

@ -4,6 +4,8 @@
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/67ff45d9ae02e583d0f9b3432a5ebbe05c30c966/javawriter-2.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.1.1/5b31387d839a5cdaf5b6de3990da01f7f2b963c5/javawriter-2.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

4
.idea/libraries/javax_annotation_api_1_2.xml

@ -4,6 +4,8 @@
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.2/479c1e06db31c432330183f5cae684163f186146/javax.annotation-api-1.2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.2/ad18a02db08eaee697f812e333f692fc51129e4a/javax.annotation-api-1.2-sources.jar!/" />
</SOURCES>
</library>
</component>

28
app/app.iml

@ -54,9 +54,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/.apt_generated" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
@ -100,25 +98,25 @@
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" scope="TEST" name="uiautomator-v18-2.1.2" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="runner-0.4.1" level="project" />
<orderEntry type="library" exported="" name="runner-0.4.1" level="project" />
<orderEntry type="library" exported="" name="xmlwise-1_2" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="espresso-idling-resource-2.2.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="javawriter-2.1.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="javax.annotation-api-1.2" level="project" />
<orderEntry type="library" exported="" name="espresso-idling-resource-2.2.1" level="project" />
<orderEntry type="library" exported="" name="hamcrest-core-1.3" level="project" />
<orderEntry type="library" exported="" name="javawriter-2.1.1" level="project" />
<orderEntry type="library" exported="" name="javax.annotation-api-1.2" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="espresso-core-2.2.1" level="project" />
<orderEntry type="library" exported="" name="junit-4.12" level="project" />
<orderEntry type="library" exported="" name="espresso-core-2.2.1" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-library-1.3" level="project" />
<orderEntry type="library" exported="" name="hamcrest-library-1.3" level="project" />
<orderEntry type="library" exported="" name="core-3.2.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="exposed-instrumentation-api-publish-0.4.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="rules-0.4.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="jsr305-2.0.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="javax.inject-1" level="project" />
<orderEntry type="library" exported="" name="exposed-instrumentation-api-publish-0.4.1" level="project" />
<orderEntry type="library" exported="" name="rules-0.4.1" level="project" />
<orderEntry type="library" exported="" name="jsr305-2.0.1" level="project" />
<orderEntry type="library" exported="" name="javax.inject-1" level="project" />
<orderEntry type="library" exported="" name="acra-4.6.1" level="project" />
<orderEntry type="library" exported="" name="support-v13-23.0.1" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-integration-1.3" level="project" />
<orderEntry type="library" exported="" name="hamcrest-integration-1.3" level="project" />
<orderEntry type="library" exported="" name="rebound-0.3.8" level="project" />
<orderEntry type="library" exported="" name="library-aar-1.0.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" />

35
app/build.gradle

@ -22,30 +22,50 @@ android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
applicationId "com.breadwallet"
minSdkVersion 21
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
moduleName "BreadWalletCore"
ldLibs "log"
cFlags "-std=c99"
ldLibs "log"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
release {
minifyEnabled false
// proguardFiles getDefaultProguardFiles('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
jniDebuggable true
}
release {
debuggable false
jniDebuggable false
}
foss {
debuggable false
jniDebuggable false
}
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', '.apt_generated']
aidl.srcDirs = ['src/main/aidl', '.apt_generated']
assets.srcDirs = ['src/main/assets']
jni.srcDirs = []
jniLibs.srcDirs = ['src/main/jni','src/main/jni/breadwallet-core/secp256k1']
}
}
}
dependencies {
@ -58,8 +78,6 @@ dependencies {
compile 'com.facebook.rebound:rebound:0.3.8' //spring animation
compile 'org.json:json:20141113' //JSonParser google
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
// compile 'com.squareup.dagger:dagger:1.2.2'
// compile 'com.squareup.dagger:dagger-compiler:1.2.2'
androidTestCompile 'com.android.support.test:runner:+'
// Set this dependency to use JUnit 4 rules
@ -68,4 +86,5 @@ dependencies {
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.+'
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.+'
compile 'com.android.support.test.espresso:espresso-core:2.2.1'
}

9
app/src/main/java/com/breadwallet/presenter/activities/IntroActivity.java

@ -74,9 +74,10 @@ public class IntroActivity extends FragmentActivity {
private Bundle savedInstanceState;
//loading the native library
// static {
// System.loadLibrary("BreadWalletCore");
// }
static {
Log.e(TAG,"loadLibrary!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
System.loadLibrary("BreadWalletCore");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -89,7 +90,7 @@ public class IntroActivity extends FragmentActivity {
}
// KeyStoreManager.deleteKeyStoreEntry(KeyStoreManager.PHRASE_ALIAS);
KeyStoreManager.deleteAllKeyStoreEntries();
//m.generateRandomSeed(this);
// m.generateRandomSeed(this);
//testSQLiteConnectivity(this); //do some SQLite testing
app = this;
introWelcomeFragment = new IntroWelcomeFragment();

10
app/src/main/java/com/breadwallet/presenter/fragments/FragmentDecoder.java

@ -59,7 +59,7 @@ import java.util.concurrent.TimeUnit;
import static android.hardware.camera2.CameraCharacteristics.LENS_FACING;
import static android.hardware.camera2.CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP;
import static android.hardware.camera2.CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_VIDEO;
import static android.hardware.camera2.CameraMetadata.CONTROL_AF_MODE_MACRO;
import static android.hardware.camera2.CameraMetadata.LENS_FACING_FRONT;
import static android.hardware.camera2.CaptureRequest.CONTROL_AF_MODE;
@ -285,12 +285,16 @@ public class FragmentDecoder extends Fragment
public void onClick(View v) {
try {
if (mPreviewRequestBuilder == null || mCaptureSession == null) return;
if (++flashButtonCount % 2 != 0) {
mPreviewRequestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_TORCH);
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, null);
flashButton.setBackgroundResource(R.drawable.flash_on);
} else {
mPreviewRequestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, null);
flashButton.setBackgroundResource(R.drawable.flash_off);
}
} catch (CameraAccessException e) {
e.printStackTrace();
@ -488,9 +492,9 @@ public class FragmentDecoder extends Fragment
mCaptureSession = cameraCaptureSession;
try {
// Auto focus should be continuous for camera preview.
mPreviewRequestBuilder.set(CONTROL_AF_MODE, CONTROL_AF_MODE_CONTINUOUS_VIDEO);
mPreviewRequestBuilder.set(CONTROL_AF_MODE, CONTROL_AF_MODE_MACRO);
// Flash is automatically enabled when necessary.
/**no need for flash now*/
/**no need for flash_on now*/
//mPreviewRequestBuilder.set(CONTROL_AE_MODE, CONTROL_AE_MODE_ON_AUTO_FLASH);
// Finally, we start displaying the camera preview.

1
app/src/main/java/com/breadwallet/presenter/fragments/FragmentScanResult.java

@ -94,7 +94,6 @@ public class FragmentScanResult extends Fragment implements View.OnClickListener
customKeyboardLayout.getLocationOnScreen(locations);
customKeyboardLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
createCustomKeyboardButtons(locations[1]);
Log.e(TAG, "Inside the global layout listener: location[1]: " + locations[1]);
}
}

3
app/src/main/java/com/breadwallet/presenter/fragments/FragmentSettingsAll.java

@ -70,7 +70,7 @@ public class FragmentSettingsAll extends Fragment {
public void onClick(View v) {
if (FragmentAnimator.checkTheMultipressingAvailability(300)) {
FragmentAnimator.animateSlideToLeft(app, app.fragmentSettings, fragmentSettingsAll);
Log.d(TAG, "Starting: showBouncySlide()");
Log.d(TAG, "Starting: showBouncySlideHorizontal()");
}
}
});
@ -89,4 +89,5 @@ public class FragmentSettingsAll extends Fragment {
MiddleViewAdapter.resetMiddleView(null);
}
}

42
app/src/main/java/com/breadwallet/tools/AddressReader.java

@ -8,9 +8,14 @@ import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.breadwallet.presenter.activities.MainActivity;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertPath;
import java.security.cert.CertPathBuilder;
@ -20,6 +25,9 @@ import java.security.cert.CertPathParameters;
import java.security.cert.CertPathValidator;
import java.security.cert.CertPathValidatorException;
import java.security.cert.CertPathValidatorResult;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
/**
* BreadWallet
@ -49,6 +57,7 @@ public class AddressReader {
public static final String TAG = AddressReader.class.getName();
public static String getTheAddress(String address) {
//check if it has an BIP72 request URI
String addressToProcess = address;
int length = addressToProcess.length();
@ -102,6 +111,36 @@ public class AddressReader {
// }
Log.e(TAG, "Response is: " + response.toString());
byte[] certs = getCertificatesFromPaymentRequest(response.getBytes(),0);
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// chain is of type X509Certificate[]
// CertPath cp = cf.generateCertPath(Arrays.asList(certs));
// CertPathValidator cpv = CertPathValidator.getInstance(CertPathValidator.getDefaultType());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream fis = new FileInputStream("/system/etc/security/cacerts.bks");
ks.load(fis, null);
BufferedInputStream bis = new BufferedInputStream(fis);
while (bis.available() > 0) {
Certificate cert = cf.generateCertificate(bis);
Log.e(TAG, "CERT: " + cert.toString());
}
// PKIXParameters params = new PKIXParameters(ks);
// CertPathValidatorResult cpvr = cpv.validate(cp, params);
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Load CAs from an InputStream
// Certificate ca;
// InputStream caInput = null;
@ -239,6 +278,5 @@ public class AddressReader {
return null;
}
private static native byte[] getCertificatesFromPaymentRequest(byte[] req);
private static native byte[] getCertificatesFromPaymentRequest(byte[] req, int index);
}

4
app/src/main/java/com/breadwallet/tools/adapter/ParallaxViewPager.java

@ -110,7 +110,7 @@ public class ParallaxViewPager extends ViewPager {
@Override
public void run() {
SpringAnimator.showBouncySlide(getRootView(), SpringAnimator.TO_RIGHT, 15);
SpringAnimator.showBouncySlideHorizontal(getRootView(), SpringAnimator.TO_RIGHT, 15);
}
}, 80);
} else if (position == 0) {
@ -118,7 +118,7 @@ public class ParallaxViewPager extends ViewPager {
@Override
public void run() {
SpringAnimator.showBouncySlide(getRootView(), SpringAnimator.TO_LEFT, 15);
SpringAnimator.showBouncySlideHorizontal(getRootView(), SpringAnimator.TO_LEFT, 15);
}
}, 80);
}

19
app/src/main/java/com/breadwallet/tools/animation/FragmentAnimator.java

@ -51,10 +51,6 @@ public class FragmentAnimator {
public static void animateDecoderFragment() {
MainActivity.beenThroughSavedInstanceMethod = false;
MainActivity.app.decoderFragmentOn = true;
InputMethodManager keyboard = (InputMethodManager) MainActivity.app.
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(CustomPagerAdapter.adapter.
mainFragment.addressEditText.getWindowToken(), 0);
MainActivity.app.activityButtonsEnable(false);
CustomPagerAdapter.adapter.showFragments(false);
//Disabled inspection: <Expected resource type anim>
@ -76,6 +72,7 @@ public class FragmentAnimator {
MainActivity.app.setBurgerButtonImage(MainActivity.app.BACK);
//Disabled inspection: <Expected resource type anim>
FragmentTransaction fragmentTransaction = MainActivity.app.getFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.from_right, R.animator.to_left);
fragmentTransaction.replace(R.id.main_layout, MainActivity.app.getFragmentScanResult());
fragmentTransaction.commit();
@ -83,7 +80,7 @@ public class FragmentAnimator {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SpringAnimator.showBouncySlide(MainActivity.app.fragmentScanResult.getView(),
SpringAnimator.showBouncySlideHorizontal(MainActivity.app.fragmentScanResult.getView(),
SpringAnimator.TO_RIGHT, 70);
}
}, 200);
@ -100,8 +97,8 @@ public class FragmentAnimator {
CustomPagerAdapter.adapter.showFragments(false);
MainActivity.app.setBurgerButtonImage(context.CLOSE);
FragmentTransaction fragmentTransaction = context.getFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.from_top, R.animator.from_top);
fragmentTransaction.replace(R.id.main_layout, context.fragmentSettingsAll);
fragmentTransaction.setCustomAnimations(R.animator.from_top, -1);
fragmentTransaction.add(R.id.main_layout, context.fragmentSettingsAll);
fragmentTransaction.commit();
context.pageIndicator.setVisibility(View.GONE);
@ -120,7 +117,7 @@ public class FragmentAnimator {
level--;
MainActivity.app.setBurgerButtonImage(context.BURGER);
FragmentTransaction fragmentTransaction = context.getFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.to_top, R.animator.to_top);
fragmentTransaction.setCustomAnimations(-1, R.animator.to_top);
fragmentTransaction.remove(context.fragmentSettingsAll);
fragmentTransaction.commit();
CustomPagerAdapter.adapter.showFragments(true);
@ -168,7 +165,7 @@ public class FragmentAnimator {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SpringAnimator.showBouncySlide(to.getView(), SpringAnimator.TO_RIGHT, 20);
SpringAnimator.showBouncySlideHorizontal(to.getView(), SpringAnimator.TO_RIGHT, 20);
}
}, 200);
previous.add(previousFragment);
@ -190,7 +187,7 @@ public class FragmentAnimator {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SpringAnimator.showBouncySlide(tmp.getView(), SpringAnimator.TO_LEFT, 20);
SpringAnimator.showBouncySlideHorizontal(tmp.getView(), SpringAnimator.TO_LEFT, 20);
}
}, 200);
fragmentTransaction.commit();
@ -225,6 +222,7 @@ public class FragmentAnimator {
}
public static void hideDecoderFragment() {
Log.e(TAG, "hideDecoderFragment");
MainActivity.app.decoderFragmentOn = false;
new Handler().postDelayed(new Runnable() {
@Override
@ -257,4 +255,5 @@ public class FragmentAnimator {
MainActivity.app.setBurgerButtonImage(MainActivity.app.BURGER);
}
}

7
app/src/main/java/com/breadwallet/tools/animation/SpringAnimator.java

@ -35,6 +35,7 @@ import com.facebook.rebound.SpringSystem;
*/
public class SpringAnimator {
private static final int SPRING_DELAY_MS = 30;
private static double TENSION = 600;
private static double DAMPER = 35;
public static final String TAG = "SpringAnimation";
@ -139,7 +140,7 @@ public class SpringAnimator {
* @param direction SpringAnimator.TO_LEFT or SpringAnimator.TO_RIGHT
* @param tension an int value to specify the springy tension
*/
public static void showBouncySlide(final View view, final int direction, final int tension) {
public static void showBouncySlideHorizontal(final View view, final int direction, final int tension) {
SpringSystem springSystem = SpringSystem.create();
if(view == null) return;
// Add a spring to the system.
@ -152,7 +153,7 @@ public class SpringAnimator {
public void run() {
spring.setEndValue(0f);
}
}, 70);
}, SPRING_DELAY_MS);
// Add a listener to observe the motion of the spring.
spring.addListener(new SpringListener() {
@ -200,7 +201,7 @@ public class SpringAnimator {
public void run() {
spring.setEndValue(0f);
}
}, 70);
}, 30);
// Add a listener to observe the motion of the spring.
spring.addListener(new SpringListener() {

9
app/src/main/jni/Android.mk

@ -1,6 +1,9 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := BreadWalletCore
FILE_LIST := $(wildcard $(LOCAL_PATH)/breadwallet-core/*.h)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
include $(BUILD_SHARED_LIBRARY)
LOCAL_SRC_FILES := $(LOCAL_PATH)/transition/core.h
LOCAL_C_INCLUDES := $(LOCAL_PATH)/breadwallet-core/secp256k1
include $(BUILD_SHARED_LIBRARY)

4
app/src/main/jni/Application.mk

@ -0,0 +1,4 @@
APP_PLATFORM := android-9
APP_ABI := all
NDK_TOOLCHAIN_VERSION := 4.8
APP_STL := gnustl_static

2
app/src/main/jni/breadwallet-core

@ -1 +1 @@
Subproject commit 866ff4d0e078b202609ca0f79425b280e318a91c
Subproject commit 9e3787b74b99954376a0cb4cc2d58e004e819f4a

41
app/src/main/jni/transition/core.c

@ -1,8 +1,25 @@
#include <jni.h>
//#include "breadwallet-core/BRPaymentProtocol.h"
//
// Created by Mihail Gutan on 9/24/15.
//
#include "core.h"
#include "../breadwallet-core/BRPaymentProtocol.h"
JNIEXPORT jbyteArray Java_com_breadwallet_tools_AddressReader_getCertificatesFromPaymentRequest
(JNIEnv *env, jobject obj, jbyteArray payment, jint index) {
jboolean b;
int requestLength = (*env)->GetArrayLength(env, payment);
char *buff[requestLength];
jbyte *bytePayment = (*env)->GetByteArrayElements(env, payment, &b);
uint8_t buf1[BRPaymentProtocolRequestCert(bytePayment, NULL, 0, index)];
BRPaymentProtocolRequestCert(payment, buf1, sizeof(buf1), index);
//
jbyteArray result = buf1;
(*env)->ReleaseByteArrayElements(env, payment, bytePayment, 0);
return result;
}
JNIEXPORT void Java_com_breadwallet_presenter_activities_MainActivity_sendMethodCallBack
(JNIEnv *env, jobject obj) {
@ -11,10 +28,10 @@ JNIEXPORT void Java_com_breadwallet_presenter_activities_MainActivity_sendMethod
if (mid == 0)
return;
(*env)->CallVoidMethod(env, obj, mid);
};
}
JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_encodePhrase
(JNIEnv *env, jobject obj, jbyteArray seed, jbyteArray wordList) {
//JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_encodePhrase
// (JNIEnv *env, jobject obj, jbyteArray seed, jbyteArray wordList) {
//
// jboolean b;
// int wordLen = (*env)->GetArrayLength(env, wordList);
@ -34,15 +51,5 @@ JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_encodePhrase
// (*env)->ReleaseByteArrayElements(env, seed, b, JNI_ABORT);
//
// size_t byte_size = BRBIP39Encode(phrase,) continue later
}
JNIEXPORT jbyteArray Java_com_breadwallet_tools_AddressReader_getCertificatesFromPaymentRequest
(JNIEnv *env, jobject obj, jbyteArray certs) {
int certsLength = (*env)->GetArrayLength(env, certs);
char *buff[certsLength];
// BRPaymentProtocolRequestCert //TODO fix this shit please when the implementation is ready!
}
//
//}

4
app/src/main/jni/transition/core.h

@ -17,5 +17,5 @@ JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_encodePhrase
JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_wallet
(JNIEnv *env, jobject obj);
JNIEXPORT jbyteArray Java_com_breadwallet_tools_AddressReader_getCertificatesFromPaymentRequest
(JNIEnv *env, jobject obj, jbyteArray certs);
jbyteArray Java_com_breadwallet_tools_AddressReader_getCertificatesFromPaymentRequest
(JNIEnv *env, jobject obj, jbyteArray payment, jint index);

2
app/src/main/jni/transition/testingStuff.c

@ -18,6 +18,7 @@ JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_wallet
char *last_name;
float balance;
};
struct wallet wallet1;
wallet1.account_number = 123;
wallet1.balance = 52415.21;
@ -33,3 +34,4 @@ JNIEXPORT jbyteArray Java_com_breadwallet_wallet_BRWalletManager_wallet
return arr;
}

4
app/src/main/res/animator/from_bottom.xml

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="y"
android:valueFrom="1000"
android:valueFrom="2000"
android:valueTo="0"
android:valueType="floatType" />

4
app/src/main/res/animator/from_left.xml

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="x"
android:valueFrom="-1000"
android:valueFrom="-2000"
android:valueTo="0"
android:valueType="floatType" />
</set>

4
app/src/main/res/animator/from_right.xml

@ -3,9 +3,9 @@
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="x"
android:valueFrom="1000"
android:valueFrom="2000"
android:valueTo="0"
android:valueType="floatType" />
</set>

6
app/src/main/res/animator/from_top.xml

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
android:shareInterpolator="true">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="y"
android:valueFrom="-1000"
android:valueFrom="-2000"
android:valueTo="0"
android:valueType="floatType" />

4
app/src/main/res/animator/to_bottom.xml

@ -3,9 +3,9 @@
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="y"
android:valueFrom="0"
android:valueTo="1000"
android:valueTo="2000"
android:valueType="floatType" />
</set>

4
app/src/main/res/animator/to_left.xml

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="x"
android:valueFrom="0"
android:valueTo="-1000"
android:valueTo="-2000"
android:valueType="floatType" />
</set>

4
app/src/main/res/animator/to_right.xml

@ -3,9 +3,9 @@
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="x"
android:valueFrom="0"
android:valueTo="1000"
android:valueTo="2000"
android:valueType="floatType" />
</set>

4
app/src/main/res/animator/to_top.xml

@ -2,9 +2,9 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:duration="@integer/slide_speed"
android:propertyName="y"
android:valueFrom="0"
android:valueTo="-1000"
android:valueTo="-2000"
android:valueType="floatType" />
</set>

BIN
app/src/main/res/drawable-hdpi/flash_off.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

0
app/src/main/res/drawable-hdpi/flash.png → app/src/main/res/drawable-hdpi/flash_on.png

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

14
app/src/main/res/layout-sw600dp/fragment_decoder.xml

@ -1,4 +1,3 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_decoder_layout"
android:layout_width="match_parent"
@ -13,6 +12,7 @@
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:src="@drawable/cameraguide" />
<TextView
android:id="@+id/decoder_text"
android:layout_width="wrap_content"
@ -20,9 +20,17 @@
android:layout_above="@+id/decoder_camera_guide_image"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:textColor="@android:color/white"
android:shadowColor="@color/black"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white" />
<ImageButton
android:id="@+id/button_flash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/flash_off" />
</RelativeLayout>

2
app/src/main/res/layout/fragment_decoder.xml

@ -43,7 +43,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button_flash"
android:background="@drawable/flash"
android:background="@drawable/flash_off"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />

1
app/src/main/res/values/integer.xml

@ -3,4 +3,5 @@
<integer name="card_flip_time_full">500</integer>
<integer name="card_flip_time_half">250</integer>
<integer name="slide_speed">150</integer>
</resources>

2
build.gradle

@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.+'
classpath 'com.android.tools.build:gradle:1.3.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

2
gradle/wrapper/gradle-wrapper.properties

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

Loading…
Cancel
Save