Отсутствует активность в манифесте при объявлении - PullRequest
0 голосов
/ 01 мая 2018

Есть две стрелки, как вы видите на картинке .. один указывает на деятельность в моем проекте другой указывает на рекомендованную деятельность для декларации в манифесте. но нет никаких рекомендуемых действий кроме "StreamingActivity" когда я запускаю свое приложение, приложение показывает мне это сообщение "К сожалению, приложение остановлено"

enter image description here

этот код для публицистики

package khaabbas.huthaifa.com.talk_listen;

import android.hardware.Camera;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.red5pro.streaming.R5Connection;
import com.red5pro.streaming.R5Stream;
import com.red5pro.streaming.R5StreamProtocol;
import com.red5pro.streaming.config.R5Configuration;
import com.red5pro.streaming.source.R5Camera;
import com.red5pro.streaming.source.R5Microphone;
//import android.graphics.Camera;

public class PublishFragment extends android.support.v4.app.Fragment implements SurfaceHolder.Callback {
public static android.support.v4.app.Fragment newInstance() {
    PublishFragment fragment = new PublishFragment();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}


public PublishFragment() {
    // Required empty public constructor
}

public R5Configuration configuration;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    configuration = new R5Configuration(R5StreamProtocol.RTSP, "localhost",  8554, "live", 1.0f);
    configuration.setLicenseKey("NBZF-UFM2-GCEP-OUYZ");
    configuration.setBundleID(getActivity().getPackageName());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_publish, container, false);
    return v;
}
protected Camera camera;
protected boolean isPublishing = false;
protected R5Stream stream;

private void preview() {
    camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
    SurfaceView surface = (SurfaceView) getActivity().findViewById(R.id.surfaceView);
    surface.getHolder().addCallback(this);
}

@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
    try {
        camera.setPreviewDisplay(surfaceHolder);
        camera.startPreview();
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {

}

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

}
@Override
public void onResume() {
    super.onResume();
    preview();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    Button publishButton = (Button) getActivity().findViewById(R.id.publishButton);
    publishButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onPublishToggle();
        }
    });
}

private void onPublishToggle() {
    Button publishButton = (Button) getActivity().findViewById(R.id.publishButton);
    if(isPublishing) {
        stop();
    }
    else {
        start();
    }
    isPublishing = !isPublishing;
    publishButton.setText(isPublishing ? "stop" : "start");
}

public void start() {
    camera.stopPreview();

    stream = new R5Stream(new R5Connection(configuration));
    stream.setView((SurfaceView) getActivity().findViewById(R.id.surfaceView));

    R5Camera r5Camera = new R5Camera(camera, 320, 240);
    R5Microphone r5Microphone = new R5Microphone();

    stream.attachCamera(r5Camera);
    stream.attachMic(r5Microphone);

    stream.publish("red5prostream", R5Stream.RecordType.Live);
    camera.startPreview();
}

public void stop() {
    if(stream != null) {
        stream.stop();
        camera.startPreview();
    }
}

@Override
public void onPause() {
    super.onPause();
    if(isPublishing) {
        onPublishToggle();
    }
}



}

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Нет необходимости объявлять фрагмент в манифесте, удалите объявление фрагмента из манифеста, потому что вы объявляете фрагмент в разделе в файле манифеста.

0 голосов
/ 01 мая 2018

Удалите оба эти действия, потому что вы использовали только одно действие, оно определяет действие, а два других - фрагмент.

    <activity android:name=".S"/>
    <activity android:name=".Sub"/>

и фрагмент вызова используется ниже кода ..

         Fragment fragment = new HomeFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_frame, fragment, fragment.getClass().getSimpleName()).addToBackStack(null).commit();
...