小编Jas*_*son的帖子

InputStream不会关闭,也不会永远关闭

我正在尝试将外部mp3下载到内部存储中.但是,我试图下载的文件很大,所以我试图以1MB的块下载它们,以便您可以在下载其余部分时开始播放它们.这是我的流代码:

    InputStream is = null;
    OutputStream os = null;

    try {
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet( url );
        HttpResponse response = client.execute( get );

        MyLog.d( "Connection established" );

        byte[] buffer = new byte[8192];
        is = new BufferedInputStream( response.getEntity().getContent(), buffer.length );
        os = openFileOutput( filename, MODE_PRIVATE );

        int size;
        int totalSize = 0;

        while (( size = is.read( buffer ) ) != -1 && totalSize < 1048576) {
            os.write( buffer, 0, size );
            totalSize += size; …
Run Code Online (Sandbox Code Playgroud)

android inputstream bufferedinputstream audio-streaming

6
推荐指数
1
解决办法
1893
查看次数

视图之间的尴尬触摸事件传播

我有一个Gallery完整的ImageViews,ImageViews是可以缩放和可翻译的.我的目标是,一旦一个ImageView不能再转换为左/右,Gallery就会滚动.因此有时ImageView需要处理触摸事件,有时Gallery需要处理触摸事件.我在我ImageViewonTouchEvent方法中有逻辑,因为当我希望发生切换时,我会得到意想不到的结果.我会在显示代码后解释问题:

// PinchZoomImageView.java

@Override
public boolean onTouchEvent( MotionEvent event ) {

    Log.i( "PinchZoomImageView", "IM GETTING TOUCHED!" );

    if ( isPassThroughTouchEvent() ) {
        Log.i( "PinchZoomImageView", "IM RETURNING FALSE!" );
        return false;
    }

    getScaleDetector().onTouchEvent( event );

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN: {
            final float x = event.getX();
            final float y = event.getY();

            setLastTouchX( x );
            setLastTouchY( y );
            setActivePointerId( event.getPointerId( 0 ) …
Run Code Online (Sandbox Code Playgroud)

android android-gallery

6
推荐指数
1
解决办法
2364
查看次数

检测EditText中的更改(TextWatcher无效)

我需要检测EditText中的文本更改.我已经尝试过TextWatcher,但是它没有按照我期望的方式工作.采用onTextChanged方法:

public void onTextChanged( CharSequence s, int start, int before, int count )

假设我在EditText中已经有了"John"文本.如果按另一个键,"e",s将是"Johne",start将是0,before将是4,并且count将是5.我希望这种方法工作的方式将是EditText之前的内容与什么之间的区别它即将成为.

所以我希望:

s = "Johne"
start = 4 // inserting character at index = 4
before = 0 // adding a character, so there was nothing there before
count = 1 // inserting one character
Run Code Online (Sandbox Code Playgroud)

我需要能够在每次按下按键时检测个别更改.因此,如果我有文本"John",我需要知道索引4处添加了"e".如果我退格"e",我需要知道"e"已从索引4中删除.如果我将光标放在"J"之后"和退格,我需要知道"J"已从索引0中删除.如果我把"G"放在"J"中,我想知道"G"在索引0处替换为"J".

我怎样才能做到这一点?我想不出一个可靠的方法来做到这一点.

android textwatcher android-edittext

5
推荐指数
1
解决办法
1万
查看次数

在Galaxy S3上录制时,视频显示会出现乱码

我正在写一个相机应用程序,我遇到了S3的问题.每当我开始录制时,显示屏都会变成垃圾(见下面的截图).然后,当我停止录制时,我得到一个例外:

10-02 13:36:31.647: E/MediaRecorder(24283): stop failed: -1007
10-02 13:36:31.647: D/AndroidRuntime(24283): Shutting down VM
10-02 13:36:31.647: W/dalvikvm(24283): threadid=1: thread exiting with uncaught exception (group=0x40c49a68)
10-02 13:36:31.647: E/AndroidRuntime(24283): FATAL EXCEPTION: main
10-02 13:36:31.647: E/AndroidRuntime(24283): java.lang.RuntimeException: stop failed.
10-02 13:36:31.647: E/AndroidRuntime(24283):    at android.media.MediaRecorder.native_stop(Native Method)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at android.media.MediaRecorder.stop(MediaRecorder.java:742)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at com.myapp.android.ui.camera.NewCameraActivity.stopRecording(NewCameraActivity.java:178)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at com.myapp.android.ui.camera.NewCameraActivity.toggleRecording(NewCameraActivity.java:189)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at com.myapp.android.ui.camera.NewCameraActivity.onClick(NewCameraActivity.java:97)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at android.view.View.performClick(View.java:3565)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at android.view.View$PerformClick.run(View.java:14165)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at android.os.Handler.handleCallback(Handler.java:605)
10-02 13:36:31.647: E/AndroidRuntime(24283):    at …
Run Code Online (Sandbox Code Playgroud)

android android-camera galaxy android-mediarecorder

5
推荐指数
1
解决办法
3591
查看次数

Mockito正在验证错误的方法

我在我的应用程序中使用Nucleus库遵循 MVP 架构,并尝试模拟我的 Fragment 的 Presenter。模拟及其覆盖的调用工作得很好,但我的verify调用很奇怪。首先,这是我的测试:

private User mUser;
private ProfilePresenter mPresenterMock;

@Override
public void setUp() throws Exception {
    super.setUp();
    mUser = TestUtils.generateTestUser();
    mPresenterMock = mock(ProfilePresenter.class);

    ProfileFragment fragment = ProfileFragment.newInstance();
    fragment.setPresenterFactory(() -> mPresenterMock);
    setFragment(fragment);
}

@Test
public void testInitialValues() {
    doAnswer(invocation -> {
        getFragment().onUserLoaded(mUser);
        return null;
    }).when(mPresenterMock).loadUser(anyBoolean());

    startFragment();
    verify(mPresenterMock).loadUser(eq(false));
    onView(withId(R.id.empty)).check(matches(not(withEffectiveVisibility(VISIBLE))));
    assertEquals(mUser.getFullName(), getFragment().mToolbar.getTitle());
    assertEquals(1, getFragment().mVideosRecyclerView.getChildCount());
}
Run Code Online (Sandbox Code Playgroud)

我收到一条测试失败消息verify

Argument(s) are different! Wanted:
profilePresenter.start(false);
Actual invocation has different arguments:
profilePresenter.start(1);
Run Code Online (Sandbox Code Playgroud)

它似乎正在做的是验证模拟类中的方法,如果它是模拟对象,则不应出现这种情况。这是loadUser我的 Presenter 中调用的方法start …

android mockito android-testing android-espresso

5
推荐指数
0
解决办法
957
查看次数

File.list()以不同于2.5的顺序返回文件

如果我File.list()BookGenerator.java中使用Android 2.2和调用方法,那么页面和章节按照确切的顺序排列,但每当我在Android 4.0上执行时,它都会给出反向页面列表或反向页面顺序.

2.2和4.0之间是否存在兼容性问题?

java android android-webview android-2.2-froyo android-4.0-ice-cream-sandwich

4
推荐指数
1
解决办法
545
查看次数

开始视频录制时,屏幕会闪烁并调整大小

我正在将照片/视频捕捉整合到我的应用中,并且遇到视频捕捉问题.每当视频录制开始时,屏幕会闪烁,我会暂停一下,然后开始录制视频.但是,使用手机的相机应用程序,根本没有闪烁/暂停.

此外,我的相机预览显示会recorder.start()在调用后立即调整大小.我不明白为什么会这样.它使预览失真(一切看起来都是压扁和更宽).

我的问题:如何在开始视频录制时阻止闪烁/暂停?如何防止recorder.start()调整预览显示的大小?

每当启用"视频模式"时,initRecording()立即调用.一旦用户按下按钮,startRecording()就会被调用.最后,当再次按下该按钮时,将stopRecording()被调用.不太重要的是,当切换回"图像模式"时,destroyRecorder()被称为.

@Override
public void onResume() {

    super.onResume();

    Camera camera = null;
    try {
        camera = Camera.open();
    }
    catch (Exception e) {
        // Camera isn't available
        Toast.makeText( getActivity(), "Camera is not available at this time.", Toast.LENGTH_SHORT ).show();
        getActivity().finish();
        return;
    }

    if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD ) {
        setCameraDisplayOrientation( camera );
    }
    else {
        camera.setDisplayOrientation( 90 );
    }

    setCamera( camera );
    setCameraZoomDisplay( camera );

    if ( getSurfaceHolder() …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-camera android-mediarecorder

4
推荐指数
1
解决办法
2217
查看次数

通过AlarmManager设置不准确的报警时有多少延迟?

AlarmManager用于设置警报时,除非您设置了确切的警报,否则可能会在指定时间后的某个时间触发警报.对这种延迟的范围有什么保证吗?我想成为一个负责任的开发人员,如果延迟不超过一分钟,我就不会使用确切的时间.但我找不到任何有关文档延迟的规范.我很感激资源记录了延迟功能及其时间规格.

android android-alarms

3
推荐指数
1
解决办法
772
查看次数

忽略Android软键盘以进行布局

显示软键盘时,它会更改视图的高度参数.我希望它忽略键盘甚至显示,从不调整我的布局大小,只是简单地在我的活动上显示键盘"按原样".我可以在清单中放置一个标志来忽略软键盘以进行布局吗?

android android-softkeyboard

2
推荐指数
2
解决办法
1617
查看次数

9patch是我没有标记的拉伸区域

我为背景区域创建了一个9patch,它似乎是拉伸的区域,我没有标记为拉伸.我有它,所以垂直它应该从中间拉伸1个像素,但它仍然拉伸顶部和底部边界.这是我的9patch,放在drawable文件夹中:

9patch

background以下是作为布局属性放置的结果图像:

截图

为什么它会拉伸顶部和底部边框?我希望这些在顶部保持2个像素,在底部保持4个像素,但是它的拉伸.

如果您想尝试一下,可以在此处下载图像.重命名它,所以它有一个.9.png扩展,把它作为background一个View约100dp高大,采取截图,然后放大,你可以看到我所看到的.

android nine-patch

2
推荐指数
1
解决办法
643
查看次数