作者:root
在Android上使用gRPC
1.Hello
syntax = "proto3";
option java_multiple_files = true;
package hello;
service Hello {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
2.gRPCService
import hello.HelloGrpc;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
public class gRPCService {
private static final String gRPC_HOST = "isilent.me";
private static final int gRPC_PORT = 80;
private static gRPCService instance;
private ManagedChannel mChannel;
public static gRPCService getInstance() {
if (instance == null) {
instance = new gRPCService();
}
return instance;
}
private gRPCService() {
}
/**
* 获取Channel
*
* @return
*/
private ManagedChannel getChannel() {
if (mChannel == null || mChannel.isShutdown()) {
// 设置最大接收消息大小为20M
mChannel = ManagedChannelBuilder.forAddress(gRPC_HOST, gRPC_PORT).usePlaintext().maxInboundMessageSize(20 * 1024 * 1024).build();
}
return mChannel;
}
/**
* 获取Hello存根
*
* @return
*/
public HelloGrpc.HelloStub getHelloStub() {
return HelloGrpc.newStub(getChannel());
}
}
3.SimpleStreamObserver
import android.os.Handler;
import android.os.Looper;
import io.grpc.stub.StreamObserver;
public abstract class SimpleStreamObserver<T> implements StreamObserver<T> {
private static Handler handler = new Handler(Looper.getMainLooper());
@Override
public void onCompleted() {
}
@Override
public void onNext(final T value) {
// 返回主线程
handler.post(new Runnable() {
@Override
public void run() {
onSuccess(value);
}
});
}
/**
* 请求成功的回调
*
* @param value
*/
protected abstract void onSuccess(T value);
}
4.Main
public static void Main() {
HelloRequest request = HelloRequest.newBuilder().setName("hello").build();
gRPCService.getInstance().getHelloStub().sayHello(request, new SimpleStreamObserver<HelloReply>() {
@Override
protected void onSuccess(HelloReply value) {
System.out.println(value.getMessage());
}
@Override
public void onError(Throwable t) {
}
});
}
JAVA值传递
JAVA使用的是一种名为值传递的求值策略,这种策略在传值过程中会复制实参的引用,并将这份拷贝传入到方法形参中,所以对形参的任何重赋值操作都不会对实参产生影响。
参考链接:
在Android上配置gRPC的环境
1.下载安装Protobuf Support插件,如图所示:
2.在项目根目录的 build.gradle 的 buildscript 中加入 protobuf-gradle-plugin 插件:
buildscript {
...
dependencies {
...
classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.12"
}
}
3.在应用Module的 build.gradle 中进行如下配置
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'
protobuf {
protoc { artifact = 'com.google.protobuf:protoc:3.11.0' }
plugins {
grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.29.0' }
}
generateProtoTasks {
all().each { task ->
task.builtins {
java { option 'lite' }
}
task.plugins {
grpc { option 'lite' }
}
}
}
}
dependencies {
// gRPC
implementation 'io.grpc:grpc-okhttp:1.29.0'
implementation 'io.grpc:grpc-protobuf-lite:1.29.0'
implementation 'io.grpc:grpc-stub:1.29.0'
implementation 'javax.annotation:javax.annotation-api:1.2'
}
4.最后将 .proto 协议文件放在 src/main/proto/ 文件夹下,点击build进行编译,如果出现如下图,则证明环境配置成功!
参考链接:
RK3399配置build.prop
准备
1.启动root模式
adb root
2.重新挂载文件系统
adb remount
3.拷贝文件
adb pull /system/build.prop
修改
1.修改硬件屏幕方向
ro.sf.hwrotation=0
2.修改屏幕分辨率
persist.sys.framebuffer.main=1920×1080
3.隐藏虚拟按键
qemu.hw.mainkeys=1
配置
1.覆盖文件
adb push build.prop /system
参考链接:
【转】[RK3399—Android7.1] 默认屏幕显示方向
转载自:[RK3399—Android7.1] 默认屏幕显示方向
/system/build.prop
文件中 ro.sf.hwrotation=0
这里可以90、180、270
修改后同步,重启,可调整默认旋转方向。
镜像直接默认修改:device/rockchip/rk3399/build.prop 中 ro.sf.hwrotation=0 属性
【转】Win10 LTSC 恢复照片查看器
新装的WIN10 LTSC 2019,发现默认看图则是画图,并不是照片查看器。
对WIN10 不太了解,不知道现在WIN10正确的看图方式还是不是照片查看器,但不管怎么样,照片查看器用的习惯了,所以想用回照片查看器,以下是操作教程:
新建一个文本文件,并复制以下代码粘贴保存,修改后缀为.bat
@echo off&cd\&color 0a&cls echo 恢复Win10照片查看器 reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpg" /t REG_SZ /d PhotoViewer.FileAssoc.Tiff /f reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpeg" /t REG_SZ /d PhotoViewer.FileAssoc.Tiff /f reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".bmp" /t REG_SZ /d PhotoViewer.FileAssoc.Tiff /f reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".png" /t REG_SZ /d PhotoViewer.FileAssoc.Tiff /f echo 请双击或右击图片,选择“照片查看器”即可 pause
如果不会创建操作的,可以直接点击下载,然后一定要点击鼠标右键,以管理员身份运行,运行完毕后,随便找一张照片,右键,打开方式,选择照片查看器即可。

