android.os.ParcelFileDescriptor#createPipe ( )源码实例Demo

下面列出了android.os.ParcelFileDescriptor#createPipe ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: cwac-provider   文件: AbstractPipeStrategy.java
/**
 * {@inheritDoc}
 */
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
  throws FileNotFoundException {
  if ("r".equals(mode)) {
    ParcelFileDescriptor[] pipe=null;

    try {
      pipe=ParcelFileDescriptor.createPipe();

      new TransferOutThread(getInputStream(uri),
                            new AutoCloseOutputStream(pipe[1])).start();
    }
    catch (IOException e) {
      Log.e(getClass().getSimpleName(), "Exception opening pipe", e);

      throw new FileNotFoundException("Could not open pipe for: "
          + uri.toString());
    }

    return(pipe[0]);
  }

  throw new IllegalArgumentException("Cannot support writing!");
}
 
@Nullable
@Override
public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException{
	if(!"r".equals(mode))
		throw new SecurityException("Unexpected file mode "+mode);
	if(ApplicationLoader.applicationContext==null)
		throw new FileNotFoundException("Unexpected application state");

	VoIPBaseService srv=VoIPBaseService.getSharedInstance();
	if(srv!=null){
		srv.startRingtoneAndVibration();
	}

	try{
		ParcelFileDescriptor[] pipe=ParcelFileDescriptor.createPipe();
		ParcelFileDescriptor.AutoCloseOutputStream outputStream = new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]);
		byte[] silentWav={82,73,70,70,41,0,0,0,87,65,86,69,102,109,116,32,16,0,0,0,1,0,1,0,68,(byte)172,0,0,16,(byte)177,2,0,2,0,16,0,100,97,116,97,10,0,0,0,0,0,0,0,0,0,0,0,0,0};
		outputStream.write(silentWav);
		outputStream.close();
		return pipe[0];
	}catch(IOException x){
		throw new FileNotFoundException(x.getMessage());
	}
}
 
源代码3 项目: libstreaming   文件: MediaStream.java
protected void createSockets() throws IOException {

		if (sPipeApi == PIPE_API_LS) {
			
			final String LOCAL_ADDR = "net.majorkernelpanic.streaming-";
	
			for (int i=0;i<10;i++) {
				try {
					mSocketId = new Random().nextInt();
					mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId);
					break;
				} catch (IOException e1) {}
			}
	
			mReceiver = new LocalSocket();
			mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId));
			mReceiver.setReceiveBufferSize(500000);
			mReceiver.setSoTimeout(3000);
			mSender = mLss.accept();
			mSender.setSendBufferSize(500000);
			
		} else {
			Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop");
			mParcelFileDescriptors = ParcelFileDescriptor.createPipe();
			mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]);
			mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]);
		}
	}
 
源代码4 项目: android_9.0.0_r45   文件: UiAutomation.java
/**
 * Executes a shell command. This method returns a file descriptor that points
 * to the standard output stream. The command execution is similar to running
 * "adb shell <command>" from a host connected to the device.
 * <p>
 * <strong>Note:</strong> It is your responsibility to close the returned file
 * descriptor once you are done reading.
 * </p>
 *
 * @param command The command to execute.
 * @return A file descriptor to the standard output stream.
 */
public ParcelFileDescriptor executeShellCommand(String command) {
    synchronized (mLock) {
        throwIfNotConnectedLocked();
    }
    warnIfBetterCommand(command);

    ParcelFileDescriptor source = null;
    ParcelFileDescriptor sink = null;

    try {
        ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
        source = pipe[0];
        sink = pipe[1];

        // Calling out without a lock held.
        mUiAutomationConnection.executeShellCommand(command, sink, null);
    } catch (IOException ioe) {
        Log.e(LOG_TAG, "Error executing shell command!", ioe);
    } catch (RemoteException re) {
        Log.e(LOG_TAG, "Error executing shell command!", re);
    } finally {
        IoUtils.closeQuietly(sink);
    }

    return source;
}
 
源代码5 项目: android_9.0.0_r45   文件: UiAutomation.java
/**
 * Executes a shell command. This method returns two file descriptors,
 * one that points to the standard output stream (element at index 0), and one that points
 * to the standard input stream (element at index 1). The command execution is similar
 * to running "adb shell <command>" from a host connected to the device.
 * <p>
 * <strong>Note:</strong> It is your responsibility to close the returned file
 * descriptors once you are done reading/writing.
 * </p>
 *
 * @param command The command to execute.
 * @return File descriptors (out, in) to the standard output/input streams.
 *
 * @hide
 */
@TestApi
public ParcelFileDescriptor[] executeShellCommandRw(String command) {
    synchronized (mLock) {
        throwIfNotConnectedLocked();
    }
    warnIfBetterCommand(command);

    ParcelFileDescriptor source_read = null;
    ParcelFileDescriptor sink_read = null;

    ParcelFileDescriptor source_write = null;
    ParcelFileDescriptor sink_write = null;

    try {
        ParcelFileDescriptor[] pipe_read = ParcelFileDescriptor.createPipe();
        source_read = pipe_read[0];
        sink_read = pipe_read[1];

        ParcelFileDescriptor[] pipe_write = ParcelFileDescriptor.createPipe();
        source_write = pipe_write[0];
        sink_write = pipe_write[1];

        // Calling out without a lock held.
        mUiAutomationConnection.executeShellCommand(command, sink_read, source_write);
    } catch (IOException ioe) {
        Log.e(LOG_TAG, "Error executing shell command!", ioe);
    } catch (RemoteException re) {
        Log.e(LOG_TAG, "Error executing shell command!", re);
    } finally {
        IoUtils.closeQuietly(sink_read);
        IoUtils.closeQuietly(source_write);
    }

    ParcelFileDescriptor[] result = new ParcelFileDescriptor[2];
    result[0] = source_read;
    result[1] = sink_write;
    return result;
}
 
源代码6 项目: FairEmail   文件: ParcelFileDescriptorUtil.java
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    new TransferThread(inputStream, new ParcelFileDescriptor.AutoCloseOutputStream(writeSide))
            .start();

    return readSide;
}
 
源代码7 项目: FairEmail   文件: OpenPgpApi.java
public ParcelFileDescriptor startPumpThread() throws IOException {
    if (writeSidePfd != null) {
        throw new IllegalStateException("startPumpThread() must only be called once!");
    }
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSidePfd = pipe[0];
    writeSidePfd = pipe[1];

    new DataSourceTransferThread(this, new ParcelFileDescriptor.AutoCloseOutputStream(writeSidePfd)).start();

    return readSidePfd;
}
 
源代码8 项目: edslite   文件: MainContentProviderBase.java
private static ParcelFileDescriptor readFromPipe(final File targetFile, final Bundle opts) throws IOException
{
    final ParcelFileDescriptor[] pfds = ParcelFileDescriptor.createPipe();
    Completable.create(s -> {
        FileInputStream fin = new FileInputStream(pfds[0].getFileDescriptor());
        try
        {
            Util.CancellableProgressInfo pi = new Util.CancellableProgressInfo();
            s.setCancellable(pi);
            Util.copyFileFromInputStream(
                    fin,
                    targetFile,
                    opts.getLong(OPTION_OFFSET, 0),
                    opts.getLong(OPTION_NUM_BYTES, -1),
                    pi
            );
        }
        finally
        {
            fin.close();
        }
        pfds[0].close();
        s.onComplete();
    }).
            subscribeOn(Schedulers.io()).
            subscribe(() ->{}, Logger::log);
    return pfds[1];
}
 
源代码9 项目: edslite   文件: MainContentProviderBase.java
private static ParcelFileDescriptor writeToPipe(final File srcFile, final Bundle opts) throws IOException
{
    final ParcelFileDescriptor[] pfds = ParcelFileDescriptor.createPipe();
    Completable.create(s ->
    {
        FileOutputStream fout = new FileOutputStream(pfds[1].getFileDescriptor());
        try
        {
            Util.CancellableProgressInfo pi = new Util.CancellableProgressInfo();
            s.setCancellable(pi);
            Util.copyFileToOutputStream(
                    fout,
                    srcFile,
                    opts.getLong(OPTION_OFFSET, 0),
                    opts.getLong(OPTION_NUM_BYTES, -1),
                    pi
            );
        }
        finally
        {
            fout.close();
        }
        pfds[1].close();
        s.onComplete();
    }).
            subscribeOn(Schedulers.newThread()).
            subscribe(() ->{}, Logger::log);
    return pfds[0];
}
 
源代码10 项目: FireFiles   文件: ParcelFileDescriptorUtil.java
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    final OutputStream output = new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]);

    new TransferThread(inputStream, output).start();

    return pipe[0];
}
 
源代码11 项目: FireFiles   文件: ParcelFileDescriptorUtil.java
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    final OutputStream output = new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]);

    new TransferThread(inputStream, output).start();

    return pipe[0];
}
 
源代码12 项目: FireFiles   文件: ParcelFileDescriptorUtil.java
@SuppressWarnings("unused")
public static ParcelFileDescriptor pipeTo(OutputStream outputStream)
        throws IOException {
    final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    final InputStream input = new ParcelFileDescriptor.AutoCloseInputStream(pipe[0]);

    new TransferThread(input, outputStream).start();

    return pipe[1];
}
 
源代码13 项目: FireFiles   文件: ParcelFileDescriptorUtil.java
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    final OutputStream output = new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]);

    new TransferThread(inputStream, output).start();

    return pipe[0];
}
 
源代码14 项目: FireFiles   文件: ParcelFileDescriptorUtil.java
@SuppressWarnings("unused")
public static ParcelFileDescriptor pipeTo(OutputStream outputStream)
        throws IOException {
    final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    final InputStream input = new ParcelFileDescriptor.AutoCloseInputStream(pipe[0]);

    new TransferThread(input, outputStream).start();

    return pipe[1];
}
 
源代码15 项目: tuxguitar   文件: TGAssetsProvider.java
@Override
public ParcelFileDescriptor openDocument(String documentId, String mode, CancellationSignal cancellationSignal) throws FileNotFoundException {
	try {
		ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
		if( this.assets != null ) {
			TGStreamUtil.write(this.assets.open(documentId), new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]));
		}
		return pipe[0];
	} catch(IOException e) {
		e.printStackTrace();

		throw new FileNotFoundException();
	}
}
 
源代码16 项目: openpgp-api   文件: ParcelFileDescriptorUtil.java
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    new TransferThread(inputStream, new ParcelFileDescriptor.AutoCloseOutputStream(writeSide))
            .start();

    return readSide;
}
 
public static ParcelFileDescriptor pipeFrom(InputStream inputStream)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    // start the transfer thread
    new TransferThread(inputStream, new ParcelFileDescriptor.AutoCloseOutputStream(writeSide))
            .start();

    return readSide;
}
 
public static ParcelFileDescriptor pipeTo(OutputStream outputStream)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    // start the transfer thread
    new TransferThread(new ParcelFileDescriptor.AutoCloseInputStream(readSide), outputStream)
            .start();

    return writeSide;
}
 
public static ParcelFileDescriptor pipeFrom(InputStream inputStream, IThreadListener listener)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    // start the transfer thread
    new TransferThread(inputStream, new ParcelFileDescriptor.AutoCloseOutputStream(writeSide),
            listener)
            .start();

    return readSide;
}
 
public static ParcelFileDescriptor pipeTo(OutputStream outputStream, IThreadListener listener)
        throws IOException {
    ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe();
    ParcelFileDescriptor readSide = pipe[0];
    ParcelFileDescriptor writeSide = pipe[1];

    // start the transfer thread
    new TransferThread(new ParcelFileDescriptor.AutoCloseInputStream(readSide), outputStream,
            listener)
            .start();

    return writeSide;
}