标签: android-camera

Android MediaRecorder setOutPutFile()使用Socket进行流式传输

我正在开发一个Android应用程序,应该能够将视频流式传输到我的网络上的本地服务器,而无需将其存储在SD卡上.

为此,我在C#中使用了一个简单的套接字应用程序来监听特定的IP:PORT

在Android部分,我设置了setOutputFile()这个IP:PORT使用套接字.

此应用程序在Android手机上完美启动,但它不显示预览,当我开始录制时,它会毫无例外地退出.它也不会向网络发送任何数据流.

当我设置setOutPutFile()为SD卡时,它可以正常工作并录制视频.

对于服务器部分,当我从任何其他应用程序(从PC)向同一IP:PORT发送数据时,它会接收数据.

简而言之,我想使用socket进行流媒体建立PC和Android之间的通信通道.

这是我的Android代码:

 Socket soc=new Socket("192.168.1.3",8210);
 ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc);
 ...
 ...
 // other Recorder setup steps
 ...
 ...
 Recorder.setOutputFile(pfd.getFileDescriptor()); // working fine for sdcard
 Recorder.setPreviewDisplay(holder.getSurface());
 Recorder.prepare();
Run Code Online (Sandbox Code Playgroud)

这是我在C#中的服务器应用程序并在PC上运行:

 socketForServer = new TcpClient("192.168.1.3", 8210);
 NetworkStream networkStream = socketForServer.GetStream();
 byte[] rData = new byte[1024];
 networkStream.Read(rData, 0, 1024);
 ...
 ...
 // process rData
 ...
 ...
Run Code Online (Sandbox Code Playgroud)

我无法理解这里发生的问题.我正朝着正确的方向前进吗?

android video-streaming android-camera

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

如何确定摄像机预览帧的默认方向?

我正在尝试(再次)创建实际上正常工作的相机预览逻辑,适用于所有场景:

  • 任何设备:手机,平板电脑,烤面包机,等等
  • 任何相机:前向,后向,侧向,面向狗,等等
  • android.hardware.Cameraandroid.hardware.camera2
  • 肖像和风景设备方向

因为我minSdkVersion15岁,因为我并不特别关心表现,所以我试图用一个TextureView.并且,根据fadden在这里这里的地方的建议,我试图setTransform()TextureView适当的情况下使用Matrix它:

  • 正确定位预览,考虑设备方向
  • TextureView完全填充,以TextureView纵横比与预览帧宽高比不匹配的裁剪为代价
  • 不会拉伸图像,因此预览正方形项目(例如,3"方形Post-ItNote®)会在预览中显示正方形

在我的情况下,TextureView填充屏幕,减去状态栏和导航栏.

adjustAspectRatio()GrafikaPlayMovieActivity.java开始,我现在有:

  private void adjustAspectRatio(int videoWidth, int videoHeight,
                                 int rotation) {
    if (iCanHazPhone) {
      int temp=videoWidth;
      videoWidth=videoHeight;
      videoHeight=temp;
    }

    int viewWidth=getWidth();
    int viewHeight=getHeight();
    double aspectRatio=(double)videoHeight/(double)videoWidth;
    int newWidth, newHeight;

    if (getHeight()>(int)(viewWidth*aspectRatio)) {
      newWidth=(int)(viewHeight/aspectRatio);
      newHeight=viewHeight;
    }
    else {
      newWidth=viewWidth;
      newHeight=(int)(viewWidth*aspectRatio);
    }

    int xoff=(viewWidth-newWidth)/2;
    int yoff=(viewHeight-newHeight)/2;

    Matrix …
Run Code Online (Sandbox Code Playgroud)

android android-camera textureview android-textureview

9
推荐指数
1
解决办法
4653
查看次数

如何在三星Galaxy S上使用前置摄像头

我已经尝试了几个我在网上找到的答案,例如:

Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)

要么

mMediaRecorder.setVideoSource(2);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我还在清单文件上设置了权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?我已经搜索了StackOverflow,我知道之前已经问过这个问题,但似乎没有确定的解决方案,任何形式的帮助都将受到赞赏.

注意:我在2.1平台上使用Galaxy S.

android android-sdk-2.1 android-camera

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

在使用相机警报之前插入SD卡.android模拟器?

我要做的是:打开相机并将拍摄的照片保存在SD卡中,但是当相机活动开始时,我会收到一个自动生成的警告,显示在"吐司"中并说:"之前插入SD卡使用相机"

注意:我正在使用模拟器.

任何想法如何解决这个问题?

在此输入图像描述

android android-emulator android-camera android-activity

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

android camera setDisplayOrientation(90)在不同的设备中失败

我的相机应用程序有问题.相机活动处于纵向模式.所以我给了

camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)

根据SO中的不同帖子,这将在纵向模式下正常工作.

但它不能正常使用不同的设备.问题是,预览向左或向右旋转90度.在Htc中没关系.但是对于Galaxy系列,它不起作用.

谁能帮我 ?

android orientation android-camera

8
推荐指数
1
解决办法
5808
查看次数

按下确定按钮后,Android相机活动不会返回到我的应用程序

我有一个完全正常工作的应用程序.我的Camera Intent或权限只有1个问题.

该应用程序应该在用户按下按钮时启动Camera Activity.这工作正常,但当用户通过单击相机上的确定按钮接受图片时,它不会回到我的应用程序.如果按下相机上的取消按钮,它会按预期返回到我的应用程序.

我已经阅读了我在这里可以找到的所有类似问题,但没有一个能解决我的问题.我需要告诉相机确切的保存图像的位置,因为我想在我的应用程序中交替2.这是创建Camera Intent并启动它的代码:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath));
startActivityForResult(intent, 11);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了多个值imagePath(这是一个字符串),但是相机的OK按钮没有使用它们中的任何一个.这些是我尝试过的路径:

/mnt/sdcard/<appName>/cameraImages/image1.jpg
from Environment.getExternalStorageDirectory()

/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getExternalCacheDir()

/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getCacheDir()
Run Code Online (Sandbox Code Playgroud)

我的清单文件中有以下权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" 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-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

你能帮助我弄清楚我的代码有什么问题,或者告诉我一条有效的路径是什么?我更喜欢图像存储在缓存位置,因为在用户离开应用程序后图像继续存在并不重要,但我并不关心谁有权访问图像.

我正在4.1模拟器上进行所有测试,使用4.1 SDK进行编译,我的最低版本是API 8(2.2).

我已经为意图提出了一个案例onActivityResult(),但我不认为你们需要看到那些代码,因为它不应该影响问题.

java android android-camera

8
推荐指数
1
解决办法
4900
查看次数

android.widget.ArrayAdapter.createViewFromResource中的NullPointerException

我正在创建一个具有首选项活动的应用程序,其中列表首选项条目有问题.这个应用程序在我的模拟器上工作正常,但我在移动设备上测试我的应用程序时显示错误

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsListView.obtainView(AbsListView.java:2033)
Run Code Online (Sandbox Code Playgroud)

当我在移动设备中单击该列表首选项时,会出现此问题.这是我的代码

prference.xml

<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
            android:title="@string/settings">            
        <ListPreference
                android:key="@string/resolution"
                android:title="@string/imageres"
                android:summary="@string/summaryres"
                android:dialogTitle="@string/resFormat" 
                />
    </PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

settings.java

package com.example;

import android.database.Cursor;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;

public class Settings extends PreferenceActivity {
    private SQLiteoperations SQLiteAdapter;
    DTO get;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        get = (DTO) getIntent().getExtras().get("obj");
        SQLiteAdapter = new SQLiteoperations(this);
        SQLiteAdapter.openToWrite();
        addPreferencesFromResource(R.xml.preferences);
        ListPreference pref = (ListPreference) findPreference("resolution");
        pref.setEntries(getEntries());
        pref.setEntryValues(getEntries());
        System.out.println("after set entries");
        System.out.println(get.getDefaultvalues());
        pref.setDefaultValue(get.getDefaultvalues());

    }
    private CharSequence[] getEntries() …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences android-camera

8
推荐指数
1
解决办法
6762
查看次数

如何在android中检测用户存在?

我知道在Galaxy Samsung SIII中可以在设置中配置一个选项,以避免在用户查看屏幕时屏幕关闭.我认为手机使用相机或一种存在传感器.

  1. 有可能以编程方式进行吗?
  2. 即使是,有些设备也无法做到这一点.我想象一下这里的一些可能性:使用相机,加速度计,甚至用户活动:如果屏幕打开,接触,我不知道.android中有一个关于"用户存在"的特定库?使用最好的传感器?

android user-input android-camera android-sensors

8
推荐指数
1
解决办法
3920
查看次数

在片段内打开相机

是否可以在fragment相似的视图中使用相机,以便它不会打开另一个应用程序并远离我的特殊应用程序?

我想要一些像SurfaceView相机一样的东西?

camera android fragment android-camera

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

Android camera2输出到ImageReader格式YUV_420_888仍然很慢

我正在尝试让Android camera2在后台服务中运行,然后在回调ImageReader.OnImageAvailableListener中处理帧.我已经使用建议的原始格式YUV_420_888来获得最大fps,但是我只能在分辨率640x480上获得7fps左右.这甚至比我使用旧的Camera接口(我想升级到Camera2以获得更高的fps)或使用OpenCV JavaCameraView(我不能使用它,因为我需要在后台服务中运行处理)更慢.

以下是我的服务类.我错过了什么?

我的手机是运行Android 5.0.2的Redmi Note 3

public class Camera2ServiceYUV extends Service {
    protected static final String TAG = "VideoProcessing";
    protected static final int CAMERACHOICE = CameraCharacteristics.LENS_FACING_BACK;
    protected CameraDevice cameraDevice;
    protected CameraCaptureSession captureSession;
    protected ImageReader imageReader;

    // A semaphore to prevent the app from exiting before closing the camera.
    private Semaphore mCameraOpenCloseLock = new Semaphore(1);


    public static final String RESULT_RECEIVER = "resultReceiver";
    private static final int JPEG_COMPRESSION = 90;

    public static final int RESULT_OK = 0;
    public static final …
Run Code Online (Sandbox Code Playgroud)

android opencv android-camera android-camera2

8
推荐指数
1
解决办法
2126
查看次数