fbpx

Category: Yeni

E Ticaret Hosting Nedir, Ne İşe Yarar?

E Ticaret Hosting Nedir, Ne İşe Yarar?

Best Ecommerce Hosting

Ürünlerini ve sağlamış oldukları hizmetleri internet sitesi aracılığıyla satışa sunan kişilerin gerekli desteği alabilmelerinin sağlanmasına yardımcı olmak e ticaret hosting nedir sorusunun en açıklayıcı cevaplarından biri olacaktır. Pandemi döneminde yaşanan zorlu süreç ve ayrıca teknolojinin gelişmesine bağlı olarak internetten alışverişin önemi ve internetten alışveriş yapanların sayısı bir hayli artmış durumdadır.

E Ticaret Hosting Nedir?

Gerekli müşteri potansiyelinin sağlanması için e ticaret sitesi sahiplerinin bir desteğe ihtiyacı vardır. Bu ihtiyacı karşılamada ve müşterilerin potansiyelinin arttırılıp sağlanmasında e ticaret hosting paketi önemli bir rol oynamaktadır. E ticaret sitesinin çeşitli avantaj ve olanaklarda daha da geliştirip kullanılmasına yarar sağlamaktadır.

E-Ticaret Hosting Fiyatları

eticaret hosting FiyatlarE ticaret sitesi için alınacak hizmet, sağlamış oldukları performansa ve kullanım amaçlarına göre e ticaret hosting fiyatları da farklılık göstermektedir. Kullanım amaçlarına göre paketler; Bireysel Paketler, Kurumsal Paketler ve Bayi Paketler olmak üzere üçe ayrılmaktadır. Şirket sahipleri ihtiyaçları doğrultusunda doğru paketi seçmek durumundadırlar.

Hosting fiyat paketleri ortalama olarak 0.89 dolardan başlamakla birlikte, içeriğinde bulunan yazılım ve özelliklerin çeşitliliğine göre e-ticaret hosting paketlerinde farklılıklar göstermektedir.

E-Ticaret Hosting Seçiminde Nelere Dikkat Etmek Gerekir?

Günümüzde online alışverişin hızlanmasıyla e-ticaret sitesi sahipleri kendi amaçlarına uygun hizmet sağlayacak hosting desteği almak istemektedirler. Bunun için e-ticaret için en iyi hosting seçimi için dikkat edilmesi gereken bazı hususlar bulunmaktadır.

  • Hosting seçiminde en önemli ve dikkat edilmesi gereken konulardan biri işletim sisteminin doğru seçilmiş olmasıdır. E ticaret sitesi PHP olarak yazıldıysa Linux hostingin seçilmesi gerekmektedir. Eğer e ticaret sitesi .ASP ve .ASPX olarak yazıldığı durumda Windows hostingin seçilmesi doğru bir tercih olacaktır.
  • Site trafiğinin olması, siteye birçok kişi girildiği takdirde sitenin yavaşlamaması doğru hosting seçiminde dikkat edilmesi gereken konular arasında yer almaktadır. Online alışveriş sitesinde yavaşlama olması müşteri kaybına sebebiyet verebilecektir.
  • Web sitesinin yazılımı ne ise ona göre veri tabanı seçilmesi gerekmektedir.
  • E ticaret sitesi üzerinde yeni alınacak hosting paketleri ile ne kadar e-mail alınabileceği dikkat edilmesi gereken konular arasında yer almaktadır.
  • E ticaret sitesine güvenlik konusunda herhangi bir sıkıntı oluşturmaması gerekmektedir.
guzelnet
eticaret

Müşterilerimize Özel İndirim

Güzel net'ten Güzel Kampanya

Tüm Müşterilerimizin Dikkatine: Güzel Hosting üzerinden Linux Web Hosting ve WordPress Hosting paketlerinde 1 yıllık alımda geçerli ETICARETTEYIM indirim kuponunu kullanabilirsiniz.

Read More

SSl Nedir? TLS Nedir? Neden Önemlidirler?

SSL Nedir, TLS Nedir?

SSL Nedir? Kısaca : SSL’in açılımı Secure Sockets Layer’dır. Türkçe anlamı ise Güvenli Giriş Katmanı’dır.
HTTPS Nedir? Kısaca: HTTPS’nin açılımı The Hypertext Transfer Protocol. Türkçe Anlamı ise Güvenli Hiper Metin Transferi Protokolü’dür
TLS Nedir? Kısaca TLS’nin Açılımı Transport Layer Security’dir Türkçe Anlamı ise Taşıma Katmanı Güvenliği’dir

SSL Nedir ?

SSL, Secure Sockets Layer‘ın kısaltmasıdır ve kısaca, bir internet bağlantısını güvende tutmak ve iki sistem arasında gönderilen hassas verileri korumak, suçluların potansiyel kişisel ayrıntılar da dahil olmak üzere aktarılan herhangi bir bilgiyi okumasını ve değiştirmesini engelleyen standart teknolojidir. İki sistem, bir sunucu ve bir istemci (örneğin, bir alışveriş eticaret sitesi ve tarayıcı) veya sunucudan sunucuya (örneğin, kişisel tanımlanabilir bilgiler veya maaş bordrosu bilgileri içeren bir uygulama) olabilir.

Bunu, kullanıcılar ve siteler arasında veya iki sistem arasında aktarılan verilerin okunmasının imkansız kalmasını sağlayarak yapar. Aktarım sırasında verileri karıştırmak için şifreleme algoritmaları kullanır ve bilgisayar korsanlarının bağlantı üzerinden gönderilirken verileri okumasını engeller. Bu bilgiler, kredi kartı numaralarını ve diğer mali bilgileri, isimleri ve adresleri içerebilecek hassas veya kişisel herhangi bir şey olabilir.

TLS Nedir?

TLS nedir? TLS (Taşıma Katmanı Güvenliği), SSL’nin yalnızca güncellenmiş, daha güvenli bir sürümüdür. Daha yaygın olarak kullanılan bir terim olduğu için güvenlik sertifikalarımıza hala SSL olarak atıfta bulunuyoruz, ancak DigiCert’ten SSL satın aldığınızda, aslında ECC, RSA veya DSA şifreleme seçeneğiyle en güncel TLS sertifikalarını satın alıyorsunuz ki SSL’ i Satın almak zorunda değilsiniz,  ücretsiz de temin edebilirsiniz.

SSL ve TLS – Farklar nelerdir?

Son zamanlarda SSL hakkında bir şeyler okuyorsanız, TLS’ye de rastlamışsınızdır.

SSL, Güvenli Yuva Katmanı anlamına gelirken, TLS, Taşıma Katmanı Güvenliği anlamına gelir. Temel olarak, bunlar bir ve aynıdır, ancak tamamen farklıdır.

İkisi de ne kadar benzerSSL ve TLS, sunucular, sistemler, uygulamalar ve kullanıcılar arasındaki veri aktarımını doğrulayan şifreleme protokolleridir . Örneğin, bir kriptografik protokol, bir web sunucusu ile bir kullanıcı arasında değiş tokuş edilen verileri şifreler.

SSL, türünün ilk kriptografik protokolüydü. Öte yandan TLS, SSL’nin yeni yükseltilmiş bir sürümüydü.

Netscape, SSL’yi 1994 yılında geliştirmiştir. Web üzerinde istemci ve sunucu sistemleri arasında güvenli iletişimi sağlayacak bir sistem olarak düşünülmüştür. Yavaş yavaş, IETF (İnternet Mühendisliği Görev Gücü) protokolü aldı ve bir protokol olarak standartlaştırdı. Bunu, sürüm 1’de bulunan güvenlik açıklarını ortadan kaldıran iki SSL sürümü izledi. Mevcut SSL sürümü, SSL 3.0’dır. Aşağıdaki geçmişe bakarsak, IETF’in çevrimiçi verileri en iyi şekilde sağlam bir güvenlikle ciddi şekilde korumaya çalıştığını varsayabiliriz.

SSL 1.0 Güvenlik açığı nedeniyle SSL 1.0 yayınlanmadı.
SSL 2.0 SSL v2.0, Netscape tarafından SSL’in ilk genel sürümüdür. Şubat 1995’te piyasaya sürüldü, ancak Netscape’i SSL v.3’ü piyasaya sürmeye zorlayan tasarım kusurları vardı. Ancak, SSL v.2.0 2011’de kullanımdan kaldırıldı.
SSL 3.0 SSL v3, SSL v2.0’ın birkaç güvenlik tasarım hatasını düzelten önceki SSL v2.0 sürümünün yükseltme sürümüydü. Bununla birlikte, SSL v3.0, 2004 yılında POODLE saldırısı nedeniyle güvensiz görüldü.

TLS hakkında kısa bilgi


TLS, 1999’da piyasaya sürülen SSL 3.0’ın kriptografik bir protokol halefi olan Taşıma Katmanı Güvenliği anlamına gelir.

TLS 1.0 Ocak 1999’da piyasaya sürülen SSL v.3.0’ın yükseltilmesi olan TLS 1.0, bağlantının SSL v.3.0’a düşürülmesine izin verir.
TLS 1.1 Bundan sonra, TLS 1.0 sürümünün bir güncellemesi olan TLS v1.1 Nisan 2006’da piyasaya sürüldü. CBC (Cipher Block Chaining) saldırılarına karşı koruma ekledi. Mart 2020’de Google, Apple, Mozilla ve Microsoft, TLS 1.0 ve 1.1 sürümlerinin kullanımdan kaldırılacağını duyurdu.
TLS 1.2 TLS v1.2, istemci ve sunucu tarafından kullanılan karma ve algoritmanın belirtilmesine izin veren 2008 yılında piyasaya sürüldü. Ekstra veri modları ile daha fazla destek eklenmiş olan kimliği doğrulanmış şifrelemeye izin verir. TLS 1.2, şifre paketine dayalı olarak veri uzunluğunu doğrulayabildi.
TLS 1.3 TLS v1.3, Ağustos 2018’de piyasaya sürüldü ve önceki sürüm TLS v1.2 ile MD5 ve SHA-224 desteğinin kaldırılması gibi onu farklı kılan önemli özelliklere sahipti, daha önceki yapılandırma kullanıldığında dijital imza gerektiriyor, gerektiğinde Perfect ileri gizliliğin zorunlu kullanımı açık anahtar tabanlı anahtar değişiminde, el sıkışma mesajları artık “Sunucu Merhaba” dan sonra şifrelenecek.

SSL ve TLS arasındaki farklar


Bununla birlikte, SSL ve TLS arasındaki farklar çok küçüktür. Aslında, yalnızca teknik bir kişi farklılıkları tespit edebilir. Dikkate değer farklılıklar şunları içerir:

Şifreleme süitleri

SSL protokolü, Fortezza şifreleme paketi için destek sunar. TLS destek sağlamaz. TLS, RC4, Triple DES, AES, IDEA vb. Gibi yeni şifre paketlerinin tanımlanmasını kolaylaştıran daha iyi bir standardizasyon sürecini takip eder.

Uyarı mesajları

SSL, “Sertifika yok” uyarı mesajına sahiptir. TLS protokolü uyarı mesajını kaldırır ve onu birkaç başka uyarı mesajıyla değiştirir.

Kayıt Protokolü

SSL, her mesajı şifreledikten sonra Mesaj Kimlik Doğrulama Kodu (MAC) kullanırken, diğer yandan TLS, her mesaj şifrelemesinden sonra karma tabanlı bir mesaj kimlik doğrulama kodu olan HMAC’ı kullanır.

El sıkışma süreci

SSL’de, karma hesaplama ayrıca ana sırrı ve altlığı içerirken, TLS’de karmalar el sıkışma mesajı üzerinden hesaplanır.

Mesaj Doğrulama

SSL mesaj kimlik doğrulaması, anahtar ayrıntılarını ve uygulama verilerini anlık olarak birleştirirken, TLS sürümü HMAC Karma tabanlı İleti Kimlik Doğrulama Koduna dayanır.

Bunlar, bir SSL ve TLS sertifikası arasındaki temel farklardır. Daha önce de bahsettiğim gibi, farklılıkları anlamak için eğitimli bir göz gerekir.

Özetle, SSL eski ve TLS, herkes tarafından kullanılan modern şifreleme standardı olarak eski SSL protokolünün yeni adıdır. Teknik olarak TLS daha doğrudur, ancak herkes SSL'yi bilir.

Read More
Web

Eticaret Mobil Uygulamanıza Sesli Etkileşimler Ekleyin #1

 Günümüzün gelişen teknolojisi ile beraber bir takım farklı stratejiler gerekmektedir. Bir çoğunuzun da bildiği gibi  Bilgisayarlarda, Tabletlerde, Telefonlarda ve diğer Akıllı Cihazlarda artık ses ile yönlendirme ve veya ses ile arama devri başladı.  Eticaret siteleri yöneticilerinin de önemsemesi gereken hususlardan biri de  insanlar artık Arama çubuğunda tuşlara bamak ile uğraşmak yerine;  Voice tuşuna basarak  sesli arama yapmaktalar; Eticaret siteniz veya Eticaret mobil uygulamanız bu  teknolojiye hazır mı ?  (Aşağıda mevcut kod ve formları lütfen profesyonel yazılımcınız ile beraber uygulayın !)

Bu kod etiketinde Sesli Etkileşim API’sı ile uygulamanıza nasıl sesli etkileşimler ekleyeceğinizi öğreneceksiniz. Sesli Etkileşim API’sı, uygulamanızın kullanıcılarının işlemleri onaylamasına ve yalnızca seslerini kullanarak bir seçenekler listesinden seçim yapmasına olanak tanır.

Ne öğreneceksin

  • Sesli işlemleri desteklemek için Android bildirimini güncelleme.
  • Uygulamanızda bir sesli onayın tetiklenmesi.
  • Sesli onaylar için özel takma adlar ekleme.

Gerekenler

Hazır Örnek Kodu İndirin

Tüm örnek kodu bilgisayarınıza indirebilirsiniz …

Zip’i İndir

… veya GitHub deposunu komut satırından klonlayın.

$ git clone https://github.com/googlesamples/io2015-codelabs.git

#2  . Sesli etkileşimi deneyin

Bitmiş örneği deneyerek başlayalım. Bu, ne yaptığımızı göstermemize yardımcı olacak ve size Google uygulaması ile kendi uygulamanız arasındaki etkileşimi gösterecektir.

  1. img 3voice-interaction-end Örnek kod indirmenizden dizini seçin ( Dosya  >   Projeyi İçe Aktar… > voice-interaction-end).
  2. Click img 4Gradle senkronizasyon düğmesine.
  3. Click img 5Çalıştır  butonuna.
  4. Google uygulamasını açın.
  5. “OK Google” deyin.
  6. Sesli komut istemi belirdiğinde, “Bir selfie alın” deyin. Unutmayın: bilinen bir yapılandırma sorunu nedeniyle, çalışmaya başlamadan önce bunu birkaç kez denemeniz gerekebilir.
  7. Ses Kamerası uygulaması açılmalı ve fotoğraf çekmeniz istenmelidir.
  8. “Peynir” e cevap verin.

Bu kadar! Ses Etkileşimi API’sını kullanarak sesle çalışan ilk selfie’nizi aldınız.

Sıkça Sorulan Sorular

#3 Başlangıç ​​uygulamasını oluşturun

Sesli etkileşim

Şimdi başlangıç ​​uygulamasını açalım ve bitmiş örnek uygulamasında gördüğünüz tüm özelliklere sahip olacak şekilde nasıl ses etkileşimi ekleyeceğimizi öğrenelim.

  1. img 3voice-interaction-start Örnek kod indirmenizden dizini seçin ( Dosya  >   Projeyi İçe Aktar… > voice-interaction-start).
  2. Click img 4Gradle senkronizasyon düğmesine.
  3. Click img 5Çalıştır  butonuna.

Birkaç saniye sonra bir kamera uygulaması göreceksiniz. Bizim app şimdiye kadar yaptığı bu kadar. Aşağıdaki adımlarda, bu başlangıç ​​uygulamasına sesli etkileşim ekleyeceğiz.

#4Uygulamayı Android M Önizleme’ye geçirme

Projenizi Sesli Etkileşim API’sına hazırlamak için yapmanız gereken ilk şey, Gradle derleme ayarlarınızı Android M’yi kullanacak şekilde güncellemektir.

Uygulama / build.gradle

compileSdkVersion "android-MNC"
buildToolsVersion "21.1.1"

defaultConfig {
    minSdkVersion "android-MNC"
    targetSdkVersion "android-MNC"
}

Derleme ayarlarınızı değiştirdikten sonra img 4Gradle senkronizasyonu yaptığınızdan emin olun .

Sıkça Sorulan Sorular

#5 Sesli etkileşim amacı ekle

Şimdi uygulamanıza bazı sesli hedefler ekleme zamanı. Biz kullanarak olacak android.media.action.IMAGE_CAPTURE ve android.media.action.STILL_IMAGE_CAMERA zaten Android’de desteklenir sistem eylemleri.

Başvuru / src / main / AndroidManifest.xml’sinde

<activity           
    android:name="com.example.android.voicecamera.TakePictureActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.VOICE" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.VOICE" />
    </intent-filter>
</activity>

 Sesli Etkileşim API’sı tarafından çağrılması için her iki amaç için android.intent.category.VOICE ve android.intent.category.DEFAULTkategorilerini belirtmemiz gerektiğine dikkat edin .

#6  Sesli Etkileşim amaçlarını ele alma

Uygulamanız için bazı sesli hedefler belirledikten sonra, bunları işlemek için bir etkinlik eklemeniz gerekir.

Pakette çağrılan yeni bir sınıf oluşturun TakePictureActivity ve bu com.example.android.voicecamerapakete aşağıdaki kodu ekleyin.

TakePictureActivity.java

package com.example.android.voicecamera;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class TakePictureActivity extends Activity {
    private static String TAG = "TakePictureActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
        Intent intent = getIntent();
        if (intent == null) {
            finish();
        } else if (CameraActivity.needPermissions(this)) {
            startActivity(new Intent(this, CameraActivity.class)
                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
            finish();
            return;
        } else if (!isVoiceInteraction()) {
            Log.e(TAG, "Not voice interaction");
            if (intent != null) {
                intent.setComponent(null);
                intent.setPackage("com.google.android.GoogleCamera");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
            finish();
            return;
        }

        setContentView(R.layout.activity_camera);
        CameraFragment fragment = CameraFragment.newInstance();
        fragment.setArguments(getIntent().getExtras());

        getFragmentManager().beginTransaction()
                .replace(R.id.container, fragment)
                .commit();
    }
}

Bu aktivitede, onCreate() yöntemin aktiviteyi tetikleyen amacı incelediğini ve isVoiceInteraction() yardımcı yöntemle bir ses etkileşimi amacı aradığını görebilirsiniz . Ayrıca kamera izinlerinin gerekli olup olmadığını kontrol ettiğini fark edeceksiniz. Bu, Android M’deki uygulamaların çalışma zamanında yeni izinler almasına izin veren başka bir yeni özelliktir.

Tüm kontroller başarılı olursa, etkinlik CameraFragment. Birkaç adımda, o parçaya nasıl ses etkileşimi eklediğimizi göreceksiniz.

#7 Kamera izinlerini alma

Önceki adımda TakePictureActivity kamera izinlerinin nasıl denetlendiğini gördünüz ve bulamazsa kullanıcıyı kullanıcıya yeniden yönlendirdi CameraActivity.

CameraActivity Kullanıcının çalışma zamanında uygulama izinleri vermesine izin vermek için bazı değişiklikler yapmanız gerekir . İlk olarak, dosyaya birkaç içe aktarma ekleyin:

CameraActivity.java

import android.Manifest;
import android.content.pm.PackageManager;
import android.provider.MediaStore;
import android.widget.Toast;

CameraActivity.java

private static final int PERMISSIONS_REQUEST_ALL_PERMISSIONS = 1;
private Bundle mSavedInstanceState;

CameraActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();

    if (needPermissions(this)) {
        requestPermissions();
    } else if (intent != null) {
        intent.setComponent(null);
        intent.setPackage("com.google.android.GoogleCamera");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        finish();
    } else {
        finish();
    }
}

CameraActivity.java

static public boolean needPermissions(Activity activity) {
    Log.d(TAG, "needPermissions: ");
    return activity.checkSelfPermission(Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED
            || activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED;
}

CameraActivity.java

private void requestPermissions() {
    Log.d(TAG, "requestPermissions: ");
    String[] permissions = new String[] {
        Manifest.permission.CAMERA,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
    };
    requestPermissions(permissions, PERMISSIONS_REQUEST_ALL_PERMISSIONS);
}

Ne zaman requestPermissions()tamamladığını, bu bir geri arama yapacaktır onRequestPermissionsResult Eğer tüm izinlere verildi olup olmadığını kaydetmek gerekir nerede yöntemi.

CameraActivity.java

public void onRequestPermissionsResult(int requestCode, String permissions[],
                                           int[] grantResults) {
    switch (requestCode) {
        case PERMISSIONS_REQUEST_ALL_PERMISSIONS:
            boolean hasAllPermissions = true;
            for (int i = 0; i < grantResults.length; ++i) {
                if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
                    hasAllPermissions = false;
                    Log.e(TAG, "Unable to get permission " + permissions[i]);
                }
            }
            if (hasAllPermissions) {
                finish();
            } else {
                Toast.makeText(this,
                        "Unable to get all required permissions", Toast.LENGTH_LONG).show();
                finish();
                return;
            }
            break;
        default:
            Log.e(TAG, "Unexpected request code");
    }
}

Şimdi, uygulamanızın kameraya erişebildiğinden emin oldunuz ve eğer değilse, kullanıcıdan uygulamanıza kamera erişimi vermek isteyip istemediğine karar vermeniz istenir.

#8 Fotoğraf çekmek için “Say peynir” i uygulayın

Şimdi eğlenceli kısma geçelim: uygulamanızla asistan arasındaki sesli etkileşimi tanımlayın. Önce bazı ithalatları ekleyeceğiz.

CameraFragment.java

import android.app.VoiceInteractor;
import android.app.VoiceInteractor.PickOptionRequest;
import android.app.VoiceInteractor.PickOptionRequest.Option;
import android.view.Gravity;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;

Asistan kullanıcının yanıtını yakaladıktan sonra odak uygulamanıza geri döner ve fotoğraf çekmeye devam edebilirsiniz. Bunu yapmak için, onResume() yönteminizin sonuna sesli etkileşimi kontrol eden bir if ifadesi ekleyin . Birini bulursa, bir zamanlayıcının belirtilip belirtilmediğini kontrol eder ve çağırır startVoiceTimer(), aksi takdirde startVoiceTrigger() yöntemi çağırır .

CameraFragment.java

@Override
public void onResume() {
    super.onResume();
    Log.d(TAG, "onResume: ");
    startBackgroundThread();

    // When the screen is turned off and turned back on, the SurfaceTexture is already
    // available, and "onSurfaceTextureAvailable" will not be called. In that case, we can open
    // a camera and start preview from here (otherwise, we wait until the surface is ready in
    // the SurfaceTextureListener).
    if (mTextureView.isAvailable()) {
        openCamera(mTextureView.getWidth(), mTextureView.getHeight());
    } else {
        mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
    }

    if (mOrientationListener.canDetectOrientation()) {
        mOrientationListener.enable();
    }

    if (getActivity().isVoiceInteraction()) {
        if (isTimerSpecified()) {
            startVoiceTimer();
        } else {
            startVoiceTrigger();
        }
    }
}

Şimdi startVoiceTrigger() yöntemi oluşturun  . VoiceInteractor Etkinlikten alarak sesli etkileşim oluşturun . Gördüğünüz gibi Option , kullanıcıya sunulanları kolayca özelleştirebilirsiniz . “Cheese”, “ready”, “go”, “take” ve “ok” kelimesinin eş anlamlılarını ekleyin.

CameraFragment.java

private void startVoiceTrigger() {
    Log.d(TAG, "startVoiceTrigger: ");
    Option option = new Option("cheese");
    option.addSynonym("ready");
    option.addSynonym("go");
    option.addSynonym("take it");
    option.addSynonym("ok");

    getActivity().getVoiceInteractor()
        .submitRequest(new PickOptionRequest("Say Cheese", new Option[]{option}, null) {
            @Override
            public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) {
                if (finished && selections.length == 1) {
                    Message message = Message.obtain();
                    message.obj = result;
                    takePicture();
                } else {
                    getActivity().finish();
                }
            }
            @Override
            public void onCancel() {
                getActivity().finish();
            }
        });
}

Kullanıcı Option bu eş anlamlılardan herhangi birini kullanmayı seçerse , takePicture() yöntem çağrılır; aksi takdirde etkinlikten çıkarız.

#9 Kameraya ses etkileşimi ekleyin

Bir sonraki adım, ses etkileşim yeteneklerini kamera parçanıza eklemektir. İlk olarak, newInstance() bu parçanın yeni örneklerini oluşturmaya yardımcı olacak yöntemi ekleyin .

CameraFragment.java

public static CameraFragment newInstance() {
    Log.d(TAG, "newInstance: ");
    CameraFragment fragment = new CameraFragment();
    fragment.setRetainInstance(true);
    return fragment;
}

In onCreateView() yöntemle, sesli etkileşimleri kontrol etmek ve kullanıcı ses yoluyla etkileşim halinde kamera Kontrolleri gizlemek gerekir.

CameraFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    Log.d(TAG, "onCreateView: ");
    View view = inflater.inflate(R.layout.fragment_camera2_basic, container, false);
    if (getActivity().isVoiceInteraction()) {
        View controls = view.findViewById(R.id.controls);
        if (controls != null) {
            controls.setVisibility(View.GONE);
        }
    }
    return view;
}

Son olarak, showToast() yöntemi yalnızca bir fotoğrafın çekildiğine dair görsel bir onay göstermekle kalmayacak, aynı zamanda “İşte burada” diyerek sesli olarak onaylayacak şekilde yöntemi geliştireceğiz .

CameraFragment.java

private void showToast(String text) {
    // We show a Toast by sending request message to mMessageHandler. This makes sure that the
    // Toast is shown on the UI thread.
    Activity activity = getActivity();
    if (activity.isVoiceInteraction()) {
        Message message = Message.obtain();
        message.obj = text;
        //mSharingHandler.sendMessage(message);

        Uri contextUri = Uri.fromFile(mFile);
        Log.e(TAG, "PHOTO URI: " + contextUri);
        Log.e(TAG, "PHOTO LOCATION: " + mFile.getAbsolutePath());
        Log.e(TAG, "showToast:" + Log.getStackTraceString(new Exception()));

        Bundle extras = new Bundle();
        extras.putParcelable("context_uri", contextUri);
        activity.getVoiceInteractor().submitRequest(
                new VoiceInteractor.CompleteVoiceRequest("Here it is", extras) {
            @Override
            public void onCompleteResult(Bundle result) {
                super.onCompleteResult(result);
                Log.d(TAG, "OnCompleteResult:" + Log.getStackTraceString(new Exception()));
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse("file://" + mFile.getAbsolutePath()), "image/*");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                getActivity().finish();
                startActivity(intent);
            }
        });
   } else {
        Message message = Message.obtain();
        message.obj = text;
        mMessageHandler.sendMessage(message);
    }
}

Artık kamera parçası ses etkileşimlerini işlemeye hazır.

#10  Geri sayım sayacı ekle

Kamera eller serbest modunda fotoğraf çekerken, ne zaman gülümseyeceğinizi bilmeniz için bir sayacınız olması yararlı olur. İlk olarak, birkaç özellik eklemeniz gerekir CameraFragment.

CameraFragment.java

private static final String EXTRA_TIMER_DURATION_SECONDS = "android.intent.extra.TIMER_DURATION_SECONDS";

private TextView mTimerCountdownLabel = null;
private Toast mTimerCountdownToast = null;

Daha sonra, startVoiceTime() tostu oluşturmak ve zamanlayıcıyı başlatmak için yöntemin eklenmesi gerekir.

CameraFragment.java

private void startVoiceTimer() {
    Log.d(TAG, "startVoiceTimer: ");
    final int countdown = getArguments().getInt(EXTRA_TIMER_DURATION_SECONDS);

    mTimerCountdownToast = new Toast(getActivity().getApplicationContext());
    mTimerCountdownToast.setGravity(Gravity.CENTER, 0, 0);
    mTimerCountdownToast.setDuration(Toast.LENGTH_SHORT);

    LayoutInflater inflater = getActivity().getLayoutInflater();
    View layout = inflater.inflate(R.layout.toast_timer,
        (ViewGroup) getActivity().findViewById(R.id.toast_layout_root));
    mTimerCountdownToast.setView(layout);
    final TextView label = (TextView) layout.findViewById(R.id.countdown_text);

    Timer timer = new Timer("camera_timer");
    timer.scheduleAtFixedRate(new TimerTask() {
        private int mCountdown = countdown;

        @Override
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (mCountdown < 0) {
                        Log.e(TAG, "Take photo: " + mCountdown);
                        mTimerCountdownToast.cancel();
                        takePicture();
                    } else {
                        Log.e(TAG, "Execute timer: " + mCountdown);
                        label.setText(String.format("Photo in %d", mCountdown));
                        mTimerCountdownToast.show();
                    }
                }
            });
            mCountdown--;
            if (mCountdown < 0) {
                cancel();
            }
        }
    }, 1000, 1000);
}

Ayrıca bir zamanlayıcının varlığını kontrol etmek için bir yardımcı yöntem oluşturmamız gerekir.

CameraFragment.java

private boolean isTimerSpecified() {
    Log.d(TAG, "isTimerSpecified: ");
    return getArguments() != null && getArguments().containsKey(EXTRA_TIMER_DURATION_SECONDS);
}

Eklemeniz gereken tüm kod bu. Eklemeniz gereken birkaç düzen var ve işiniz bitti!

#11  Kullanıcı arayüzünü güncelleme

Kullanıcı arayüzünde bazı güncellemeler yapmak için weneed. İlk olarak, için bir düzen oluşturalım MainActivity. Bu, TextView giriş mesajını gösteren çok basit bir düzendir .

düzen / activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout style="@style/Widget.SampleMessageTile"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">

        <TextView style="@style/Widget.SampleMessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/horizontal_page_margin"
            android:layout_marginRight="@dimen/horizontal_page_margin"
            android:layout_marginTop="@dimen/vertical_page_margin"
            android:layout_marginBottom="@dimen/vertical_page_margin"
            android:text="@string/intro_message" />
    </LinearLayout>
</LinearLayout>

Ayrıca, tost için geri sayım zamanımızı gösteren bir düzen oluşturmamız gerekiyor. İşte böyle görünüyor:

düzen / toast_timer.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:background="@drawable/bg_toast"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp">
    <TextView
        android:id="@+id/countdown_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>

Ve işte bu, sadece sesimizle fotoğraf çekmeye hazırız!

#12 Ses etkileşimini test et

Sesli etkileşim

Artık ses etkileşiminin düzgün çalıştığından emin olmak için uygulamanızı test ediyorsunuz.

  1. Click img 4Gradle senkronizasyon düğmesine.
  2. Click img 5Çalıştır  butonuna.
  3. Google uygulamasını açın.
  4. “OK Google” deyin.
  5. Sesli komut istemi belirdiğinde, “Bir selfie alın” deyin.
  6. Ses Kamerası uygulaması açılmalı ve fotoğraf çekmeniz istenmelidir.
  7. “Peynir” e cevap verin.

Bu kadar! Sesle Etkileşim API’sını kullanarak ilk sesle çalışan kamera uygulamanızı oluşturdunuz ve oldukça tatlı bir fotoğraf çektiniz

#13  . Tebrikler!

img 1

Uygulamanız artık uygulamanızdaki sesli etkileşimi desteklemeye hazır. Gördüğünüz gibi, böyle bir eller serbest arayüzünün uygulamanızın kullanımını daha kolay ve kullanıcılar için daha eğlenceli hale getirebileceği birçok alan var.

Neleri ele aldık

  • Sesli işlemleri desteklemek için Android bildirimi güncellendi.
  • Uygulamanızda bir sesli onay tetikledi.
  • Sesli onaylar için özel takma adlar eklendi.

Sonraki adımlar

  • Kendi uygulamanıza sesli etkileşim ekleyin.
  •  Android’de hangi sesli işlemlerin zaten yerleşik olduğunu görmek için sistem işlemleri listesini okuyun .
  • Özel sesli işlemler oluşturma hakkında bilgi edinin .

Sesli Etkileşim API’sı hakkında daha fazla bilgi edinmek istiyorsanız, lütfen geliştiricinin belgelerine bakın .

Google arama  etiketi altında Stackoverflow’da soru gönderebilir ve yanıt bulabilirsiniz .

Takıldıgınız yerden bizden destek alabilirsiniz.

Read More