Câmera Android em Retrato em SurfaceView
-
23-09-2019 - |
Pergunta
Eu tentei várias coisas para tentar fazer com que a pré -visualização da câmera apareça em retrato em um SurfaceView
. Nada funcionou. Estou testando em um dróide que possui 2.0.1. Eu tentei:
1) Forçar o layout a ser retrato por: this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
2) usando
Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
parameters.setRotation(90);
camera.setParameters(parameters);
Há algo mais que eu possa tentar? Se este é um bug no Android ou no telefone, como posso garantir que esse seja o caso para que eu tenha provas para informar o cliente?
Obrigado, Prasanna
Nenhuma solução correta
Outras dicas
O selecionador das pessoas se conectará ao Active Directory e ao serviço de perfil do usuário.Mesmo sem os nomes de serviço do perfil do usuário serão resolvidos do anúncio.
Um layout de página adiciona controles à página.A página em si é construída dinamicamente, por isso não pode ser editada no SharePoint Designer.
Você pode editar a página no navegador e adicionar uma peça de editor de conteúdo no corpo da página.Você pode então vincular esse CEWP para um arquivo com JavaScript, CSS ou HTML.Esta é a solução normal alternativa para injetar elementos personalizados em uma página que é definida por um layout da página.
Não tente editar o HTML do CEWP.O mais provável que o SharePoint fenda isso ao salvar.Crie seu HTML / CSS / Javascript personalizado em um arquivo.Carregue esse arquivo para uma biblioteca de documentos e vincule o CEWP na página a esse arquivo.
Você pode tentar isso (bom para 2.2 ou abaixo). Aqui eu giro a imagem antes de salvá -la no cartão SD. Mas é apenas para o modo retrato. Se você precisou fazer isso para os dois modos, verifique a orientação da câmera e coloque alguma verificação antes de capturar a imagem.
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
imageFilePath = getFilename();
InputStream is = new ByteArrayInputStream(data);
Bitmap bmp = BitmapFactory.decodeStream(is);
// Getting width & height of the given image.
if (bmp != null){
int w = bmp.getWidth();
int h = bmp.getHeight();
// Setting post rotate to 90
Matrix mtx = new Matrix();
mtx.postRotate(90);
// Rotating Bitmap
Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
rotatedBMP.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
outStream = new FileOutputStream
(String.format(imageFilePath,System.currentTimeMillis()));
outStream.write(byteArray);
outStream.close();
} else {
outStream = new FileOutputStream
(String.format(imageFilePath,System.currentTimeMillis()));
outStream.write(data);
outStream.close();
}
preview.camera.startPreview();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
};
Não há como fazer isso em muitos dispositivos atuais, incluindo o G1 e o Droid. Dê uma olhada no relatório de bug relevante aqui:
Veja também um comentário de um dos engenheiros do Android (Dave) aqui:
O link que Roman deu ao tópico da edição tem uma solução viável que estou usando agora.
Encontre aqui:http://code.google.com/p/android/issues/detail?id=1193#c26
Não há necessidade de definir parâmetros para a orientação até que você precise fazer isso explicitamente. Por padrão, ele suporta essa instalação. No meu caso, tenho uma atividade e acima dessa atividade que tenho uma visualização de câmera, por isso não defini nenhuma orientação para as propriedades da câmera; em vez disso, para a atividade, defina a orientação como retrato no arquivo manifesto. Agora o aplicativo parece e funciona bem. Pode ser útil para alguém ..
Obrigado.